API Plan Finder
Prices and limits match the providers' official pagesChecked 2026-10-19

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

ConditionName in results
Covers the monthly volumemonthly_volume
JavaScript renderingjs_rendering
Premium proxies / unblockingpremium_proxy
Structured (JSON) extractionstructured_extraction
AI extractionai_extraction
Concurrent requestsconcurrency
Requests per minuterate_limit
Monthly cost within budget (before tax)monthly_budget
Billing typebilling_type
Recurring monthly free tierfree_allowance
Failed requests are not billedfailed_request_billing
Billed per successful requestsuccess_billing
Target error responses (e.g. 404) are not billedtarget_error_billing
Exit-IP countriesgeo_targeting
Data storage / processing regiondata_region
Real-time search resultsserp_response_mode
Search results for the countriesserp_localization
Parsed result types in the search responseserp_result_types
Search enginesserp_engines
Browser time per pagebrowser_time
Pages one crawl can reachcrawl_page_limit
Official MCP servermcp_official
Vendor-hosted remote MCP endpointmcp_remote
Remote MCP accepts the authenticationmcp_auth
Zero data retentionzdr
SOC 2 reportsoc2
Search response includes page contentsearch_content
Session lengthmin_session_minutes
Proxies on the planproxies_included
CAPTCHA solvingcaptcha_solving
Session recordingsession_recording
Persistent browser profilespersistent_profiles
Dedicated IP address on the plandedicated_ip
Sending domainssending_domains
Log and event retentionlog_retention_days
Inbound email processinginbound_parse
Price per 1,000 emails beyond the planoverage_per_1k
Commercial use of the audiocommercial_use
Voice cloningvoice_cloning
Real-time streamingstreaming
Korean speechlanguages_ko
Customer content not used for trainingdata_not_used_for_training
Recorded-audio (batch) transcriptionbatch
Speaker diarization (an add-on is added to the cost)diarization
No minimum billed duration per requestno_min_billing
Batch processing discountbatch_discount
Pages in one documentmax_pages_per_doc
Table extractiontable_extraction

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

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

  1. Each page type is converted into the plan's own units (credits, requests, browser time) using the rates the provider publishes.
  2. 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.
  3. 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.
  4. 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.
  5. 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
Money paid before use: a credit pack, a balance topped up first, or a plan amount charged in advance for the period.
Free plan
Qualifies under any billing type.

API

JSON over HTTPS, no key in this version. Error responses name each field and the reason. search and check take "format": "brief" for a short answer: per plan, the monthly cost and only the requested conditions, each with its verdict, a one-line reason, one source sentence and its url. Full specification: /api/v1/openapi.json.

EndpointReturns
POST /api/v1/searchFull and partial matches for a workload and conditions.
POST /api/v1/checkVerdicts for named plans: ids in offer_ids, or names and pricing-page URLs in plans.
POST /api/v1/scenariosCosts along a changing workload: where the cheapest plan changes and where a plan stops covering the volume or the budget.
POST /api/v1/relaxThe 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.

ToolDescription
searchUse this when: the user wants to know which API plans (web scraping, SERP, web search, browser infrastructure, transactional email, text-to-speech, speech-to-text, document parsing) 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, search the web, send email, generate speech, transcribe audio or parse a document itself (this tool reads no pages and calls no provider), needs proxies only, or asks about an API outside these fields. Call it right before you choose or buy a tool or plan; format "brief" returns a short answer. Find API plans (web scraping, SERP, web search, browser infrastructure, transactional email, text-to-speech, speech-to-text, document parsing) 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. Browser infrastructure is asked in monthly browser hours, transactional email in monthly emails, text-to-speech in monthly characters, speech-to-text in monthly audio hours and document parsing in monthly document pages, each with its own conditions (for example session length, dedicated IP, voice cloning, Korean, live or recorded audio, speaker labels, pages per document, table extraction, batch discount). For search APIs it also checks the agent connection: an official or remote (hosted) MCP server and how it signs in (API key or OAuth), zero data retention on the plan, a SOC 2 report, and whether results carry the page text. 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. If you already have candidate plans or providers (for example from a web search), pass them as providers (search) or offer_ids (check_conditions) so that only those are judged. Hosts that support MCP Apps show the result as a comparison card.
get_detailsUse 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_conditionsUse 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). Call it right before you choose or buy a tool or plan; format "brief" returns a short answer. 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. If you already have candidate plans or providers (for example from a web search), pass them as providers (search) or offer_ids (check_conditions) so that only those are judged.
cost_scenariosUse 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 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_conditionsUse 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.
verify_answerUse this when: you have drafted an answer that names API plans, costs or whether they meet the user's conditions, before you give it. Do not use this when: you have not looked up any plan yet (use search). Check what a drafted answer says about API plans against the recorded official facts, using the user's conditions as given in request. For each plan claim (plan id, name or pricing-page URL, with the stated billing, monthly cost, whether it meets every condition, single condition verdicts and recorded values) it returns conflicts with the official source sentences, the check date and a one-line fix: a plan not in the catalog, unmet or unknown conditions stated as met, met stated as unmet, a condition verdict, a cost outside the computed cost or range, or a value that differs. It also lists verdicts that rest on a derived value, official pages that disagree or a two-value price range (state the condition), plans it could not check (an ambiguous name returns the candidates), the cheapest plan that meets every condition when the answer does not name it, and words of the question that suggest a condition the request does not carry.

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

ChatGPT (Plus, Pro, Business, Enterprise and Edu, on the web): Settings > Security and login, turn on Developer mode. Then open ChatGPT Plugins, click "+", enter a name, choose "No Authentication", and paste this URL under Connection. In a chat, add the app from the tools menu:

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"
      ]
    }
  }
}

Install

One step in a client that supports it. Each link holds the server name and its public address and nothing else; the server needs no key.

Claude Code:

claude mcp add --transport http web-data-plan-finder https://plans.intoperson.com/mcp

Add to Cursor · Add to VS Code · Add to VS Code Insiders