agdata
Pay-per-call web data for AI agents: any URL as Markdown, screenshots, YouTube transcripts, Google Maps and Amazon reviews, job listings, news and search. No API key, paid per call with x402 stablecoins.
Hosted MCP Server
npx add-mcp 'https://agdata.shveik.dev/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
What can I ask?
Dedicated endpoints for the questions agents ask most, each with a fixed JSON shape. For everything else, unblocking reads any page.
people & social
Who is saying what
Posts, profiles and search results from the big social platforms. Replies under a post on X. Comments under a YouTube video. Comments under a TikTok video. Comments under an Instagram post.
- tiktok
- youtube
- x-replies
- youtube-comments
- tiktok-comments
- instagram-comments
POST /x402/reddit
or POST /mpp/reddit
{"limit":5,"mode":"hashtag","query":"programming"}
places & reviews
What customers say
Google Maps places by search and location. Reviews of a place. Reviews of an Amazon product.
- google-maps
- google-maps-reviews
- amazon-reviews
POST /x402/amazon-reviews
or POST /mpp/amazon-reviews
{"limit":10,"product":"B079JLY5M5"}
search & news
What is out there right now
Google Search results for a query. Current news articles for a query, in the language and country edition you pick. Web search with each result's page read as Markdown, in one call. Fast web or news search with up to 30 excerpted results, filterable by site and category.
- google-search
- google-news
- web-search
- search-plus
POST /x402/google-news
or POST /mpp/google-news
{"limit":10,"query":"openai"}
jobs & products
What is hiring, what is selling
LinkedIn job listings. Indeed job listings with salary and employer details. Amazon product search.
- linkedin-jobs
- indeed-jobs
- amazon
POST /x402/indeed-jobs
or POST /mpp/indeed-jobs
{"country":"us","limit":10,"location":"Austin, TX","query":"nurse"}
unblocking · any page
Everything else: any URL in, clean Markdown out
When there is no dedicated endpoint, unblocking reads the page for you: it renders JavaScript, copes with common bot protection, and returns Markdown, HTML or text with title, language and final URL. Need to see it instead? Capture a screenshot or PDF. Need what a video says? Get its transcript.
- unblock
- screenshot
- youtube-transcript
POST /x402/unblock
or POST /mpp/unblock
{"format":"markdown","url":"https://example.com/"}
→ [{ "finalUrl": "https://example.com/",
"title": "Example Domain",
"format": "markdown",
"content": "# Example Domain ..." }]
Try also agproxy: Need a residential IP of your own? agproxy sells residential proxy traffic by the gigabyte and a raw fetch from a residential address, paid the same way.
Fetch only pages you may access; hosts are blocked on complaint (agdata@shveik.dev).
MCP server
MCP Every endpoint is also an MCP tool
The same routes are also an MCP server (streamable HTTP, stateless, latest and earlier protocol versions): one tool per route, paid with x402 inside the tool call. Point a client at https://agdata.shveik.dev/mcp: it lists the tools and answers a call with the quote. Each tool takes the same JSON as its endpoint, and the answer carries the settlement receipt.
any MCP client that can payshell
$ mcpc connect https://agdata.shveik.dev/mcp @agdata --x402 exact
$ mcpc @agdata tools-list
$ mcpc @agdata tools-call google-news query:=openai limit:=3
Listing the tools and getting a quote works in any MCP client. Paying needs a client that can sign x402 payments: mcpc --x402, Cloudflare Agents, or the x402 MCP SDK. Claude Desktop, Claude Code and Cursor cannot sign payments themselves. Streamable HTTP, stateless, latest and earlier protocol versions.
Two protocols, every endpoint
Pay the way your agent already does. x402 on Base and Polygon (plus Solana on some routes) or MPP on Base.
x402 · exact
The 402 carries a PAYMENT-REQUIRED header. Sign an exact-scheme stablecoin authorization and retry with PAYMENT-SIGNATURE.
Endpoints: /x402/<name>
MPP · evm charge
The 402 carries a WWW-Authenticate: Payment challenge (Machine Payments Protocol). Sign it and retry with Authorization: Payment.
Endpoints: /mpp/<name>
Both paths are the same endpoint with the same price: an unpaid request gets both challenges in one 402, and either credential is accepted on either path. Listed under x402, MPP and the OpenAPI document alike.
Why agents use it
A failed call is free A call that fails, or a page we can't fetch, isn't charged. A search that finds nothing keeps only a small fixed fee, and results you pay for but don't get are refunded unless the amount is too small to send.
No account, no key An unpaid request returns the quote, so you can see the price and what comes back before you sign anything.
Fixed-shape JSON The same fields on every call, with no recruiter, reviewer or executive personal data in the answers.
One bill, any rail x402 on Base and Polygon (plus Solana on some routes) or MPP on Base. Both protocols answer on every endpoint.
How it works
- POST a small JSON body. You get
402with an x402PAYMENT-REQUIREDheader and an MPPWWW-Authenticate: Paymentchallenge that quote the price for exactly what you asked. - Sign either one with a stablecoin authorization (EIP-3009): x402
exactor MPPevm/authorization. - Retry with
PAYMENT-SIGNATUREorAuthorizationand receive the JSON. The payment settles only once the data is in hand.
step 1 · the 402 challenge
$ curl -i -X POST https://<host>/x402/unblock
HTTP/1.1 402 Payment Required
PAYMENT-REQUIRED: …
WWW-Authenticate: Payment …
or pay with pay.sh · Solanashell
$ pay curl -X POST https://<host>/x402/google-news \
-H 'content-type: application/json' \
-d '{"query":"lithium prices","limit":3}'
pay.sh sees the 402, signs the quote
with your wallet and retries for you.
All endpoints
**POST** /{x402|mpp}/unblockUnblocker: any URL to clean Markdown powered by Apify**POST** /{x402|mpp}/instagramInstagram posts by profile, tag, search**POST** /{x402|mpp}/google-mapsGoogle Maps places and businesses**POST** /{x402|mpp}/tiktokTikTok videos by user, hashtag, search**POST** /{x402|mpp}/linkedinLinkedIn profile lookup**POST** /{x402|mpp}/youtubeYouTube video search and channel videos**POST** /{x402|mpp}/twitterX (Twitter) tweets by handle or search**POST** /{x402|mpp}/redditReddit posts by subreddit, user, search**POST** /{x402|mpp}/amazonAmazon product search**POST** /{x402|mpp}/google-searchGoogle Search results (SERP)**POST** /{x402|mpp}/google-maps-reviewsGoogle Maps reviews of a place**POST** /{x402|mpp}/youtube-transcriptYouTube transcript of a video**POST** /{x402|mpp}/screenshotWebsite screenshot or PDF of any URL**POST** /{x402|mpp}/linkedin-jobsLinkedIn job listings for a search**POST** /{x402|mpp}/indeed-jobsIndeed job listings for a search**POST** /{x402|mpp}/google-newsGoogle News articles for a search**POST** /{x402|mpp}/amazon-reviewsAmazon customer reviews of a product**POST** /{x402|mpp}/web-searchWeb search with page content powered by Apify**POST** /{x402|mpp}/x-repliesReplies to a post on X**POST** /{x402|mpp}/youtube-commentsComments under a YouTube video**POST** /{x402|mpp}/tiktok-commentsComments under a TikTok video**POST** /{x402|mpp}/instagram-commentsComments under an Instagram post**POST** /{x402|mpp}/search-plusWeb or news search with excerpts powered by Firecrawl