Guide
How to describe a workload, what each condition means, how the monthly cost is worked out, and how to use the same search from code or from an AI assistant.
Describe the workload
Cost depends on the kind of page, so pages are counted by type. A plan that charges 1 credit for a plain page may charge 5 for a rendered page and 25 for a page behind premium proxies.
- plain HTML plain_html
- Static HTML fetched without a browser.
- JavaScript-rendered javascript
- Needs a browser to run the page's scripts before the content exists.
- premium-proxy premium_proxy
- The site blocks ordinary datacenter IPs; residential or premium proxies are needed.
- JavaScript + premium-proxy javascript_premium_proxy
- Both of the above.
- Searches monthly_searches
- One search result page each.
- Structured extraction structured_extraction_pages
- Pages that must come back as JSON fields rather than HTML or text, by any method the plan offers: CSS or XPath selectors, a schema, or AI. A parser that works only on some supported sites does not count.
- AI extraction ai_extraction_pages
- Pages whose fields an AI model must find from a prompt or a schema, without selectors written for the site. Count each page in one of the two extraction fields; the extra cost of each is priced separately.
- Browser seconds per page browser_seconds_per_page
- Needed for hosted browsers, which bill by browser time.
If only a total is known, give monthly_pages_total. Costs and verdicts then cover every share of JavaScript-rendered pages from 0% to 100% of the total (no premium proxies), and the result lists the missing split under needs_input instead of guessing it.
Conditions
| Condition | Name in results |
|---|---|
| Covers the monthly volume | monthly_volume |
| JavaScript rendering | js_rendering |
| Premium proxies / unblocking | premium_proxy |
| Structured (JSON) extraction | structured_extraction |
| AI extraction | ai_extraction |
| Concurrent requests | concurrency |
| Requests per minute | rate_limit |
| Monthly cost within budget (before tax) | monthly_budget |
| Billing type | billing_type |
| Recurring monthly free tier | free_allowance |
| Failed requests are not billed | failed_request_billing |
| Billed per successful request | success_billing |
| Target error responses (e.g. 404) are not billed | target_error_billing |
| Exit-IP countries | geo_targeting |
| Data storage / processing region | data_region |
| Real-time search results | serp_response_mode |
| Search results for the countries | serp_localization |
| Parsed result types in the search response | serp_result_types |
| Search engines | serp_engines |
| Browser time per page | browser_time |
| Pages one crawl can reach | crawl_page_limit |
A condition can be required or preferred. Preferred conditions never remove a plan; they only order plans of the same cost.
Met, not met, unknown
- Met The official page states a value that satisfies the condition.
- Not met The official page states a value that does not. For monthly volume: the allowance falls short and the official page says the plan offers no extra usage.
- Unknown Not stated, stated in conflicting ways that give different answers, or past its recheck date. For monthly volume: the allowance falls short and the terms for extra usage are not stated. Unknown values are never filled in from other plans or other providers.
Full match: every required condition is met. Partial match: none is known to fail, but at least one is unknown. When nothing fully matches, the result shows how many plans each condition ruled out and the cheapest plan that meets all the other conditions. Each plan's meets_all is judged against the conditions of that search only.
How the monthly cost is worked out
- Each page type is converted into the plan's own units (credits, requests, browser time) using the rates the provider publishes.
- If the total fits the monthly allowance, the cost is the plan price. If not, the published extra-usage rule is applied (top-up packs, a price per 1,000, or metered usage). If extra usage is not offered, the plan does not cover the volume.
- Annual plans count at their per-month price, with the amount paid up front shown. Prepaid packs are spread over the months they last, up to their validity. Pay-as-you-go plans subtract any monthly free credit.
- When the price depends on something the provider decides per site (for example a difficulty tier), the cost is a range. A budget is met only if the whole range fits.
- All figures are listed USD prices before tax. Promotions, enterprise quotes and account-specific limits are not included.
Billing types
- Monthly subscription monthly_subscription
- A plan with a fixed fee (or minimum commitment) billed every month.
- Annual subscription annual_subscription
- A plan paid for a year at a time.
- Pay as you go pay_as_you_go
- No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.
- Prepaid credits prepaid_credits
- A fixed-size credit pack bought before use, usually with an expiry.
- Free plan
- Qualifies under any billing type.
API
JSON over HTTPS, no key in this version. Error responses name each field and the reason. Full specification: /api/v1/openapi.json.
| Endpoint | Returns |
|---|---|
| POST /api/v1/search | Full and partial matches for a workload and conditions. |
| POST /api/v1/check | Verdicts for named plans: ids in offer_ids, or names and pricing-page URLs in plans. |
| POST /api/v1/scenarios | Costs along a changing workload: where the cheapest plan changes and where a plan stops covering the volume or the budget. |
| POST /api/v1/relax | The smallest change of each condition that lets another plan meet every condition, and plans to confirm with the provider. |
| GET /api/v1/offers/{offer_id} | Every condition as it applies to one plan. |
| GET /api/v1/products/{product_id} | A product, its provider facts and all its plans. |
curl -s https://plans.intoperson.com/api/v1/search \
-H 'content-type: application/json' \
-d '{"monthly_pages":{"javascript":100000},"max_monthly_cost_usd":200,"min_concurrency":10}'MCP
The same operations are available as MCP tools over Streamable HTTP at https://plans.intoperson.com/mcp. No API key or sign-up. The tools only read the plan list.
| Tool | Description |
|---|---|
| search | Use this when: the user wants to know which web data API plans (web scraping, crawling, SERP search result APIs) fit a monthly workload, budget or required conditions, or what one would cost per month at that workload. Do not use this when: the user wants to scrape or search the web itself (this tool reads no pages), needs proxies only, or asks about other kinds of software. Find web data API plans (scraping, crawling, SERP search) that meet required conditions: monthly pages by type (plain HTML, JavaScript rendering, blocked sites that need premium proxies), monthly searches, concurrency, requests per minute, monthly budget before tax, billing type, exit-IP countries, search engines, search-result countries and parsed result types, pages per crawl, data storage region and structured (JSON) or AI extraction. Returns each plan's monthly cost, whether it meets every required condition, and for every condition met / not met / unknown with the official source sentence and check date, plus a purchase link. Plans with an unknown required condition are listed separately as partial matches. If nothing matches, returns how many plans each condition excluded and the cheapest plan that meets all the other conditions. |
| get_details | Use this when: you need every recorded condition, pricing rule and source sentence of one plan or product found by search or named by the user. Do not use this when: you want to compare plans against a workload (use search or check_conditions). Get every recorded condition for one plan or product: value, which plans it applies to, exceptions, official source sentence, check date and purchase link. A product too long for one response comes with one source sentence per fact. |
| check_conditions | Use this when: the user names specific plans (by name, id or pricing-page URL) and wants to know whether they meet the workload and conditions, or which plan of the same product is the cheapest that does. Do not use this when: the user has no plans in mind yet (use search). Check specific plans, given by plan id, plan name or pricing-page URL, against the workload and conditions; up to 20 plans in one call are judged against the same conditions. Returns met / not met / unknown per condition with the official source sentence, which plans and billing options each value applies to, and a purchase link. For each plan it also names the cheapest plan of the same product that meets every required condition, with its monthly cost, or null if none does. An ambiguous name or URL returns the candidate plans instead of a guess. |
| cost_scenarios | Use this when: the user asks how the cost changes as the workload grows or shifts, or at what volume another plan becomes the cheapest. Do not use this when: the workload is fixed (use search). Show how web data API plan costs change when the monthly workload changes, for example twice the pages or a larger share of JavaScript pages. Along the path from the current to a target workload it returns the cheapest fully matching plan at both ends, each workload where the cheapest plan changes, and for tracked plans where the cost first steps up, where the plan can no longer cover the volume and where the budget is exceeded. Costs follow published pricing rules (whole packs of extra credits, per-period pack limits, per-connection browser billing, monthly minimums) with official source sentences. |
| relax_conditions | Use this when: search finds no plan or too few plans and the user wants to know which condition to loosen and by how much. Do not use this when: plans already match (use search or check_conditions). When no plan, or too few plans, meet every required condition: for each condition the user can change, returns the smallest change that lets at least one plan meet everything (for example the monthly budget needed, the concurrency available, or one exit-IP country to drop) and the plans it admits with their monthly cost. Also lists plans that fail only because a condition is not stated on the official pages, with the pages checked and the check date, so the user can confirm with the provider. |
Connect
Claude Code:
claude mcp add --transport http web-data-plan-finder https://plans.intoperson.com/mcp
Claude (Pro and Max plans): Customize > Connectors, click "+", then "Add custom connector", and paste this URL:
https://plans.intoperson.com/mcp
Codex CLI:
codex mcp add web-data-plan-finder --url https://plans.intoperson.com/mcp
Cursor (mcp.json):
{
"mcpServers": {
"web-data-plan-finder": {
"url": "https://plans.intoperson.com/mcp"
}
}
}
VS Code (.vscode/mcp.json):
{
"servers": {
"web-data-plan-finder": {
"type": "http",
"url": "https://plans.intoperson.com/mcp"
}
}
}
Clients that only start local servers:
{
"mcpServers": {
"web-data-plan-finder": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://plans.intoperson.com/mcp"
]
}
}
}