Blog/context.dev
1 min read

Buy vs Build: Structured Google Search Results API

Scraping Google SERPs yourself breaks at scale, and SERP subscriptions strand quota. Get structured Google search results from context.dev, billed per result on Monid.

Buy vs Build: Structured Google Search Results API

Getting structured Google search results is either a scraper you babysit forever or a subscription you overpay for, and there is now a third option that is just one metered call.

set up https://monid.ai/SKILL.md and use context.dev/web/search to get structured Google results

Monid is a pay-per-call data API marketplace: one integration and one wallet reach hundreds of external data endpoints, so you can add Google SERP retrieval next to the rest of your data stack without a new vendor contract.

TL;DR

  • The endpoint is context.dev /web/search: send a natural-language or operator-style query, get back ranked results with url, title, and a relevance score.
  • Billing is per result (roughly cents per ten results, one credit per page of ten). No monthly minimum. See the live number at monid.ai/tools.
  • You can inspect the schema for free and only pay when you run, so testing shapes and params costs nothing.
  • Optional markdownOptions scrapes each result to Markdown in the same round-trip, which consumes more credits upstream but saves a second fetch pass.
  • It rides the same Monid wallet as your other endpoints, so no separate SERP account, key, or invoice.

Set up Monid once

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More details in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add --label main --key <your-api-key>

More details in the CLI quickstart.

A loop of DIY SERP-scraping pain (rotate proxies, solve CAPTCHA, parse shifting HTML layout, re-fix scraper, get soft-blocked) drawn as a circular cycle on the left, versus a single straight arrow labeled "one context.dev call" pointing into structured results on the right.

How the DIY route actually breaks

Scraping Google's SERP yourself sounds cheap until you run it in production. You rotate proxies to spread requests, you solve or dodge CAPTCHAs when Google decides you look like a bot, and you parse an HTML layout that shifts without any warning or changelog. The day Google reshuffles a container class, your parser returns empty arrays and your feature quietly dies.

At any real volume you also get soft-blocked: throttled, fed degraded results, or fingerprinted across your proxy pool. The end state is that you maintain a scraper instead of shipping a feature. Every engineer-hour spent chasing layout drift is an hour not spent on the product that actually needs those search results.

What a dedicated SERP vendor charges you

The obvious escape is a dedicated SERP API subscription. That fixes the blocking problem and hands you a real support contract, but it comes with its own shape. You pre-commit to a monthly plan with a fixed search quota, which means you are forecasting demand you cannot actually predict.

Guess low and you throttle your own product mid-month. Guess high and you burn budget on searches you never run, because most of these plans strand unused quota at the period boundary. On top of that it is yet another vendor account, another key to rotate, and another invoice to reconcile against everything else your agents call.

The same job as one metered call

One context.dev /web/search call on Monid returns ranked, structured Google results (and optional inline Markdown) billed per result, on the same wallet as the rest of your data stack, with no minimum to pre-commit.

Inspect the schema first (that is free), then run it. Here is a real query using Google-style operators to pull recent fintech Series A coverage from a single publication:

monid run -p context.dev -e /web/search \
  -i '{"query":"site:techcrunch.com series A fintech 2026","numResults":20}' \
  -w -o results.json

The body accepts a plain-language query or Google operators (site:, -site:, inurl:, intitle:, quoted phrases, OR). You can raise numResults up to 100, constrain with includeDomains or excludeDomains, set a freshness window and country localization, turn on query fan-out for recall, and add markdownOptions to scrape each hit to Markdown in the same call. You pay for the results you actually get, and nothing you do not run rolls up into a monthly commitment.

A single query box feeding into /web/search with parameters numResults and optional markdownOptions branching off, producing a ranked table of rows each showing url, title, and relevance score, with a small Markdown page icon attached to each row when markdownOptions is on.

DIY Google scraperDedicated SERP subscriptioncontext.dev on Monid
SetupBuild and host a scraper + proxy poolNew account, plan selection, keyOne call, existing wallet
Blocking / CAPTCHAsYour problem, foreverHandled by vendorHandled upstream
Pricing shapeInfra + eng timeFixed monthly quotaPer result, no minimum
Unused quotaN/A (you pay in maintenance)Stranded at period endNothing to strand
Markdown in one callBuild a second fetch stageUsually a separate productmarkdownOptions inline
WalletN/ASeparate invoiceShared Monid wallet

When a dedicated SERP vendor still wins

Metered calls are not always the right answer. If you are running raw massive daily search volume at a rate you have already negotiated down, a committed subscription can beat per-result pricing on unit cost. If your business depends on guaranteed rank-tracking SLAs, or you want native rank-history dashboards and alerting out of the box, a specialist SERP platform is built for exactly that and Monid is not trying to replace it. Use the metered call when your volume is spiky, when you are adding search alongside other data endpoints, or when you refuse to pre-commit to a quota you cannot forecast.

FAQ

Can I use Google search operators in the query field? Yes. The query field accepts natural language or Google-style operators, including site:, -site:, inurl:, intitle:, quoted phrases, and OR, so you can scope a search to one domain or exclude noise exactly as you would in the Google search box.

How is this billed? Per result, in the range of cents per ten results, with one credit per page of ten. Enabling markdownOptions to scrape each result consumes more credits upstream. There is no monthly minimum. Check the live rate at monid.ai/tools.

Can I get the page content, not just the links, in one call? Yes. Set markdownOptions on the same request and each result comes back with inline Markdown, controllable for links, images, main-content extraction, cache behavior, and wait. That gives an agent a single round-trip from query to readable content.

Do I need a separate context.dev account? No. It runs on your existing Monid wallet and key alongside every other endpoint you call, so there is no extra account, contract, or invoice to manage.

Try it

Inspect /web/search for free to see the exact schema, then run one real query and watch structured Google results land in results.json. You only pay for the results you actually pull, on a wallet you already have. Start at monid.ai.

context.devgoogleserpstructured-search