Trusted by developers worldwide
Turn any website into clean data.One platform for developers and their agents.
The web scraping platform to scrape, search, map and crawl through one API. Pages are rendered, sessions and retries handled automatically, and every request routes to the lightest method that works.
- Up to 5,000 free requests
- No credit card
- From $0.0002 per request
New accounts: double your first deposit within 48h of signing up.
Used by the best teams at
# Men's Tree Runner Also available in: [ Women's Sizes ](</products/womens-tree-runners>) $100 \+ Free shipping Final Few 
The platform
Everything between a URL and usable data.
One API key and one balance for every way your product or agent needs the web.
How the web scraping API routes a request
A URL goes in. AlterLab tries the lightest way to read the page first and only steps down when a page needs more. You are billed for the tier that returned the data, and only when it did.
Static and modern pages stop at the first two tiers, for a fraction of a cent. No credits and no multipliers: one dollar balance, five prices.
What is a web scraping API?
A web scraping API is a hosted service that takes a URL and returns the page's content as markdown, JSON, HTML or text. It runs the browsers, proxies and retries for you. AlterLab is one: a single POST request, five pricing tiers, billed only when the page comes back.
- LightA direct HTTP fetch. Static pages, blogs, docs, news.The fastest and cheapest way to read a page.$0.00025,000 per $1
- StandardA full-featured HTTP client with modern protocol support. Modern sites, JSON endpoints.For pages that need more than a basic fetch.$0.00033,333 per $1
- ProtectedManaged sessions with cookies, redirects and retries handled for you.Keeps a consistent session so multi-step pages load reliably.$0.002500 per $1
- DynamicFull browser rendering. React, Vue, Angular, Next.js, infinite scroll, wait_for.The page is opened in a real browser and read after it finishes loading.$0.004250 per $1
- FortressOur most thorough tier: extended browser sessions for the most demanding pages.Used only when no lighter tier could return the page.$0.0250 per $1
Failed requests are not billed · Cache hits bill at half the producing tier · Bring your own proxy for 20% off every tier
Every endpoint of the web data API
One API key and one balance across scrape, search, SERP, map, crawl, extract, monitors, sessions and jobs. The request body is the whole integration; the response is the same shape every time.
{
"url": "https://www.allbirds.com/products/mens-tree-runners",
"formats": ["markdown", "json"]
}{
"url": "https://www.allbirds.com/products/mens-tree-runners",
"status_code": 200,
"content": {
"markdown": "# Men's Tree Runner\n\nAlso available in: [ Women's Sizes ](</products/womens-tree-runners>)\n\n$100\n\n\\+ Free shipping\n\nFinal Few\n\n"
},
"response_time_ms": 3340,
"size_bytes": 807014
}One page, as markdown, JSON, HTML or text.
{
"query": "open source vector databases",
"scrape_results": true,
"num_results": 5
}{
"search_id": "…",
"query": "open source vector databases",
"status": "completed",
"results_count": 5,
"results": [
{
"position": 1,
"url": "https://…",
"title": "…",
"snippet": "…",
"content": { "markdown": "# …" }
}
]
}Web results with the page content already fetched.
{
"query": "trail running shoes",
"country": "US",
"include_ads": true
}{
"query": "trail running shoes",
"country": "US",
"organic_count": 10,
"organic_results": [
{ "position": 1, "url": "https://…", "title": "…", "snippet": "…" }
],
"ads_count": "…",
"ads": [
{ "placement": "top", "headline": "…", "display_url": "…", "is_brand_ad": false }
]
}Google results as structured JSON, with optional ad extraction.
{
"url": "https://docs.python.org",
"max_pages": 500
}{
"map_id": "map_…",
"total_urls": "…",
"sitemap_found": true,
"urls": [
{ "url": "https://docs.python.org/3/", "depth": 1, "source": "sitemap", "title": "…" },
{ "url": "https://docs.python.org/3/tutorial/", "depth": 2, "source": "link", "title": "…" }
]
}Every URL on a site in one call.
{
"url": "https://vercel.com",
"max_pages": 200
}{
"crawl_id": "…",
"status": "completed",
"total": 200,
"completed": "…",
"failed": "…",
"pages": [
{ "url": "https://vercel.com/…", "status": "succeeded", "tier_used": "1" }
]
}A whole site, page by page, delivered as it completes.
{
"url": "https://www.allbirds.com/products/mens-tree-runners",
"extraction_schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"in_stock": { "type": "boolean" }
}
}
}{
"url": "https://www.allbirds.com/products/mens-tree-runners",
"status_code": 200,
"filtered_content": {
"name": "…",
"price": "…",
"in_stock": "…"
},
"billing": { "tier_used": "…" }
}Your JSON schema, filled from any page.
{
"name": "Competitor pricing page",
"url": "https://…/pricing",
"check_interval": "0 * * * *",
"notify_on": "change",
"webhook_url": "https://your-server.com/monitor-webhook"
}{
"event": "monitor.changed",
"data": {
"monitor_id": "mon_…",
"url": "https://…/pricing",
"changes": {
"added": ["…"],
"removed": ["…"],
"summary": "…"
},
"checked_at": "…"
}
}Watch a page and get told when it changes; run anything on a cron.
{
"url": "https://…/account/orders",
"session_id": "a1b2c3d4-…"
}{
"url": "https://…/account/orders",
"status_code": 200,
"title": "…",
"byos_applied": true,
"billing": { "total_credits": 1, "tier_used": "1" }
}Reuse cookies and pin an exit IP across requests. Bring your own session for pages behind a login you own.
curl https://api.alterlab.io/api/v1/jobs/550e8400-… \
-H "X-API-Key: $ALTERLAB_API_KEY"{
"status": "succeeded",
"result": {
"url": "https://…",
"status_code": 200,
"content": { "text": "…", "html": "…" },
"billing": { "total_credits": 1, "tier_used": "1" }
},
"error": null
}Long requests run async; poll or get a webhook. Batch up to 100 URLs per call.
POST /api/v1/b2b/jobs/bulk
{
"bulk_id": "batch-2026-10-30-001",
"jobs": [
{ "url": "https://…/product/123" },
{ "query": "…", "engine": "google", "country": "us" }
],
"rate_shape_config": { "jobs_per_hour": 5000, "priority": 3 }
}{
"bulk_id": "batch-2026-10-30-001",
"job_count": 2,
"status": "accepted",
"estimated_completion_at": "…"
}Bulk submission, rate shaping, delivery to your bucket or webhook.
What is the difference between scrape, crawl, map and extract?
Scrape returns one page. Map lists every URL on a site in one call. Crawl fetches a whole site page by page. Extract fills your JSON schema from any page. Search returns web results with the pages already fetched. In AlterLab all five share one key, one balance and one response shape.
Web scraping use cases by market
The same web scraping API request, different parameters. Each row is a market, what it asks for, and the fields that come back.
| Market | The ask | Parameters | Comes back |
|---|---|---|---|
| E-commerce and price intelligenceE-commerce industry guide | Prices, stock and reviews from every retailer you compete with, hourly. | extraction_schemacountrycheck_interval: "0 * * * *" | Example values
|
| AI, LLM data and RAGAI training data | Clean markdown for your index, in batch, without the navigation and boilerplate. | formats: ["markdown"]batchcrawl | Example values
|
| Lead generationLead generation guide | Company and contact data from directories and public business sites, deduplicated for your CRM. | extraction_schemasearch | Example values
|
| Real estateReal estate industry guide | Listings, prices and availability across portals, by region. | crawlcountryextraction_schema | Example values
|
| Travel | Fares, rates and availability for routes and dates, rendered from booking flows. | render_js: "auto"wait_forcountry | Example values
|
| ResearchResearch guide | Public web collections for academic and market research, reproducible and cited. | mapcrawlformats: ["text"] | Example values
|
| SEO and SERPSERP API reference | Rankings, features and ads for your keywords, by country and language. | serpcountrylanguage | Example values
|
| MonitoringMonitors guide | Know when a page changes, with a diff and a webhook. | monitordiff_modewebhook_url | Example values
|
| FinanceFinance industry guide | Filings, prices and market data pages read on a schedule. | scheduleextraction_schema | Example values
|
| News and mediaNews industry guide | Articles as clean text with metadata, across many sources. | crawlformats: ["markdown"] | Example values
|
Can a web scraping API return markdown for RAG?
Yes. AlterLab returns clean markdown with navigation and boilerplate removed, or a rag format that is chunked with token counts for vector databases. Batch up to 100 URLs per call or crawl a whole site. Markdown pages are billed at the tier that fetched them, from $0.0002 per page.
Your AI agent can set this up and use it
Web scraping for AI agents over MCP. Paste one prompt into Claude Code, Cursor, Codex, Windsurf or any coding agent. It connects the hosted MCP server at mcp.alterlab.io, installs the SDK, asks you once for a scoped key, runs a test request and reads the rest from our docs.
No key is ever pasted into a chat. You approve it on your dashboard.
- 00:00readhttps://alterlab.io/agent-setup.md
- 00:02mcpadded https://mcp.alterlab.io/mcp (10 tools)
- 00:03sdkpip install alterlab
- 00:04keyrequested scoped key · spend cap $5 · waiting for approval
- 00:41keyapproved by you
- 00:42runPOST /v1/scrape https://news.ycombinator.com → 200 · Light · 0.8 s
- 00:43skillread https://alterlab.io/.well-known/agent-skills/index.json
- 00:44doneAlterLab is wired into this project.
- Connects. Adds the hosted MCP server to your agent and installs the Python or Node SDK.
- Asks you once. Requests a scoped, spend-capped API key. You approve it on your dashboard. No key is pasted into chat.
- Verifies. Runs a test scrape, then reads our docs and skills for the rest.
Example key approvalapproved
Let your coding agent use AlterLab?
- Key
- alterlab-agent (scoped)
- Scope
- scrape, search, map, crawl, extract
- Spend cap
- $5.00 per day
How do I give my AI agent web access?
Connect a web data tool the agent can call. With AlterLab, add the hosted MCP server at mcp.alterlab.io/mcp to Claude Code, Cursor, Codex or Windsurf, or paste the setup prompt. The agent gets scrape, search, map, crawl and extract tools, asks you once to approve a scoped key, and reads the docs itself.
Which scraping API is best for AI agents?
The best scraping API for an AI agent is one the agent can discover, set up and call on its own, with a human approving only the key: a hosted MCP server, machine-readable docs (llms.txt, OpenAPI), scoped keys with spend caps, and pricing billed only on success. AlterLab publishes all four, plus agent skills and an A2A agent card.
scrape · search · map · crawl · extractas MCP tools, hosted atmcp.alterlab.io/mcp(10 tools), or the full 25 vianpx alterlab-mcp-server. server card- Reads
/llms.txtand/llms-full.txtfor the whole API without a browser. - Installs agent skills:
/plugin marketplace add RapierCraftStudios/alterlab-skillsthen/plugin install alterlab-skills@alterlabin Claude Code. - Works in LangChain, LlamaIndex, CrewAI and n8n with the documented packages.
AlterLab’s hosted MCP server at mcp.alterlab.io/mcp exposes 10 tools over Streamable HTTP with OAuth sign-in; the local server, npx alterlab-mcp-server, exposes 25.
Paste this into your agent
Set up AlterLab in this project. Read https://alterlab.io/agent-setup.md and follow it. It connects the AlterLab MCP server, installs the SDK, requests an API key that I approve, and runs a test scrape. Never ask me to paste a key.
Paste into Claude Code, Cursor, Codex, Windsurf or any coding agent.
Three lines of code in Python, Node.js or cURL
A POST to one endpoint of the web scraping API. Markdown, JSON, HTML or text back, with the status, timing and size in the same response. Python and Node.js SDKs, or any HTTP client you already have.
curl -X POST https://api.alterlab.io/v1/scrape \
-H "X-API-Key: $ALTERLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.allbirds.com/products/mens-tree-runners", "formats": ["markdown", "json"]}'from alterlab import AlterLabSync
with AlterLabSync(api_key="sk_live_…") as client:
result = client.scrape("https://www.allbirds.com/products/mens-tree-runners")
print(result["content"])import { AlterLab } from "alterlab";
const client = new AlterLab({ apiKey: "sk_live_…" });
const result = await client.scrape({ url: "https://www.allbirds.com/products/mens-tree-runners" });{
"url": "https://www.allbirds.com/products/mens-tree-runners",
"status_code": 200,
"content": {
"markdown": "# Men's Tree Runner\n\nAlso available in: [ Women's Sizes ](</products/womens-tree-runners>)\n\n$100\n\n\\+ Free shipping\n\nFinal Few\n\n"
},
"response_time_ms": 3340,
"size_bytes": 807014
}2003.34 s788.1 KBfrom $0.0002 per request
pip install alterlab and npm install alterlab install the official AlterLab SDKs; the REST API is described by OpenAPI at alterlab.io/openapi.json.
- MCP serverHosted at
mcp.alterlab.io/mcp; Claude, Cursor, Windsurf, Codex, Gemini CLI - LangChainDocument loader
- LlamaIndexWeb data connector for RAG
- CrewAIScrape, search and extract tools
- n8nCommunity node with a template library
- SupabaseStore and query results in Postgres
- Browser extensionCapture your own authenticated sessions (BYOS)
- RESTAny language, OpenAPI at
/openapi.json
Up to 5,000 free requests. No credit card.
Web scraping API pricing and proof
Teams at Walmart, Microsoft, Groupon, Alpiq, AgentMail, AgainstData and Revel Street use AlterLab in production.
AlterLab has no subscription, a $10 minimum deposit, a balance that never expires, and bills nothing for failed requests.
- Pay only for successful requests. Failed requests are not billed.
- Balance never expires. No subscription. Minimum deposit $10.
- Spend limits and usage controls on every account.Spend limits
- Scoped, spend-capped API keys, approved by you.API keys
- GDPR data processing agreement available.DPA
- Bring your own proxy or your own session when policy requires it.Bring your own proxySessions
Five tiers, one balance
Each request is billed at the tier that returned it. Most workloads blend to about $0.001 per request (content workload blend, March 2026).
about $0.001 · content blend
How much does a web scraping API cost per request?
AlterLab charges per successful request by tier: $0.0002 (Light), $0.0003 (Standard), $0.002 (Protected), $0.004 (Dynamic) and $0.02 (Fortress). A typical content workload blends to about $0.001 per page (content workload blend, March 2026). There is no subscription, the minimum deposit is $10 and the balance never expires. Failed requests cost nothing.
Up to 5,000 free requests when you sign up. No credit card.
about 5,000 Light, 500 Protected or 250 Dynamic requests.
A web scraping API compared with building your own
Why teams choose an API over maintaining a custom scraping stack.
Should I build my own scraper or use a web scraping API?
Build your own when you need a few hundred pages from sites that do not change. Use a web scraping API when pages render in JavaScript, when pages need sessions or a full browser, or when selectors stop working faster than you can fix them. AlterLab handles rendering, sessions and proxies in 195+ countries for $0.0002 to $0.02 per page.
| Factor | AlterLab | Playwright / Puppeteer (DIY) | Scrapy (Open-Source) |
|---|---|---|---|
| Time to first scrape | Minutes | Hours — install, configure, debug | Hours — spiders, pipelines, settings |
| Sessions and retries | Yes: Included — automatic tier escalation | No: Built and maintained by you | No: Needs extra tooling for JavaScript and sessions |
| JavaScript rendering | Yes: Included from $0.004/request | Yes: Built-in, but you manage infra | Requires Scrapy-Splash or Playwright plugin |
| Cost per 1,000 requests | From $0.20 (pay-as-you-go) | $5–$50 server + engineering time | Near-zero tool cost, high engineering cost |
| Proxy coverage | 195+ countries, residential + datacenter | Separate proxy service required ($$$) | Separate proxy service required ($$$) |
| Ongoing maintenance | Yes: Zero — managed infrastructure | High — site changes break selectors regularly | High — spider maintenance + server ops |
| Uptime SLA | 99.9% target | Your responsibility | Your responsibility |
| Provider | Simple page | JavaScript rendering | Minimum |
|---|---|---|---|
| AlterLab | $0.0002 | $0.004 | $10 one-time |
| ScraperAPI | $0.00049 | $0.0049 | $49/month |
| Bright Data | $0.0015 | $0.0015 | $0 (PAYG) / $499/mo (subscription) |
| Firecrawl | $0.0063 | $0.0063 | $19/month |
Prices from each provider’s public pricing page, March 2026. Bars are on a log scale. Full comparisons on each provider page below, or read the best web scraping API comparison.
Quick answers about web scraping APIs
Direct answers to the most common questions about AlterLab.
Is AlterLab free?
Yes. Every new AlterLab account gets up to 5,000 free requests at signup, about 5,000 Light, 500 Protected or 250 Dynamic requests, no credit card required. After that, you pay only for successful requests starting at $0.0002 per page. There is no monthly subscription and your balance never expires.
Does AlterLab work with Python?
Yes. AlterLab provides an official Python SDK installable with pip install alterlab. It supports async/await, batch scraping, and automatic tier selection. You can also call the REST API directly from any Python HTTP library using your API key in the X-API-Key header.
How does AlterLab handle pages a basic fetch can't read?
It moves them up a tier. The Protected tier ($0.002/request) keeps a managed session with cookies, redirects and retries; the Dynamic tier ($0.004/request) renders the page in a full browser; and the Fortress tier ($0.02/request) is reserved for the most demanding pages. Each request routes to the lightest tier that works, so you pay the higher price only when a page needs it. No manual configuration is required.
Does AlterLab handle JavaScript rendering?
Yes. AlterLab's Dynamic tier ($0.004/request) launches a full Chromium browser, executes JavaScript, waits for React, Vue, and Angular SPAs to load, then returns the final HTML. Set render_js: 'auto' in your request to enable it. See the JavaScript rendering API page for wait_for and infinite-scroll options.
How much does AlterLab cost?
AlterLab pricing: $0.0002/request (static HTML), $0.0003/request (modern sites), $0.002/request (managed sessions), $0.004/request (JavaScript rendering), $0.02/request (most demanding pages). The minimum deposit is $10 with no subscription. Balance never expires.
Frequently asked questions
Common questions about our web scraping API, pricing, and capabilities.
What is the best web scraping API?
AlterLab is a web scraping API built for developers who need reliable data extraction at the lowest cost. It handles JavaScript rendering, sessions, proxies and retries automatically. Pricing starts at $0.0002 per request — that is 5,000 pages per dollar — with no monthly subscription and a balance that never expires. AlterLab routes each request through a 5-tier escalation system: a lightweight fetch for static pages, a full HTTP client for modern sites, managed sessions, full browser rendering for JavaScript-heavy pages, and extended browser sessions for the most demanding pages. Each URL is charged only for the tier it actually needs, which makes AlterLab the most cost-efficient option for mixed workloads that combine simple and complex pages. The minimum deposit is $10 with no commitment required.
How do I scrape websites that a basic HTTP request can't read?
AlterLab handles them automatically with a 5-tier pipeline that escalates from a lightweight fetch up to full browser rendering. When a URL is submitted, AlterLab tries the lightest tier first and only moves up when the page needs it — no manual configuration is required. For pages that need a consistent session, the Protected tier ($0.002 per request, 500 pages per dollar) manages cookies, redirects and retries. For JavaScript-heavy pages, the Dynamic tier ($0.004 per request) renders them in a full browser, and the Fortress tier ($0.02 per request) runs extended browser sessions for the most demanding pages.
How much does a web scraping API cost?
AlterLab web scraping API costs $0.0002 per request for simple static sites (5,000 pages per dollar), $0.0003 for modern sites (3,333 per dollar), $0.002 for pages that need managed sessions (500 per dollar), $0.004 for JavaScript rendering (250 per dollar), and $0.02 for the most demanding pages (50 per dollar). The minimum deposit is $10 with no monthly subscription. Balance never expires — add funds when needed, use them at any time. Compare: ScraperAPI starts at $0.00049/credit ($49/month subscription, credits expire monthly), Firecrawl at $0.0063/request ($19/month for 3,000 credits), and Bright Data at $0.0015/request flat rate (public pricing, March 2026). With AlterLab's tier routing, each request is billed at the cheapest tier that works for that URL.
How to scrape JavaScript-heavy websites?
AlterLab renders JavaScript-heavy websites using headless Chromium browsers powered by Playwright. Setting render_js: 'auto' in an API request renders the page in a full browser when it needs one, which executes all JavaScript on the page, waits for dynamic content to load, and returns the final rendered HTML, clean markdown, or structured JSON. The Dynamic tier costs $0.004 per request — 250 pages per dollar — and supports React, Vue, Angular, Next.js, and any other SPA framework. Custom wait_for selectors pause rendering until a specific CSS selector or text string appears, ensuring dynamic content is fully loaded before extraction. AlterLab also supports wait_for_timeout and scroll_to_bottom for infinite scroll pages.
Can I extract structured data like product prices and reviews?
AlterLab extracts structured data from any website using AI-powered JSON schema extraction. Developers define the exact fields they need — product name, price, review count, stock status, image URL — and AlterLab returns a clean JSON object matching that schema. Extraction works on e-commerce sites, job boards, real estate listings, news articles, and any page with structured content. AlterLab combines structured extraction with multi-tier rendering: for JavaScript-rendered product pages, extraction runs after the full browser render completes. The extraction result includes confidence scores per field. No custom parsing code is required — the JSON schema definition is the entire integration.
Does AlterLab have an MCP server?
Yes. AlterLab runs a hosted MCP server at https://mcp.alterlab.io/mcp over Streamable HTTP with OAuth sign-in in the browser, so no API key goes into a config file. It exposes 10 tools: scrape, search, map, crawl, extract and cost estimation among them. A local server, npx alterlab-mcp-server, exposes 25 tools with an API key. Setup for Claude Code, Cursor, Codex and Windsurf is in https://alterlab.io/agent-setup.md.
Is there a free web scraping API?
Yes. AlterLab gives every new account up to 5,000 free requests with no credit card: about 5,000 Light, 500 Protected or 250 Dynamic requests. An AI agent can also start with no account at all through a trial key limited to 50 requests over 24 hours. After that, pricing is pay-as-you-go from $0.0002 per request with a $10 minimum deposit and no subscription.
Make your first request
Up to 5,000 free requests. No credit card. Balance never expires.