AI Web Scraper API - Scrape Any Website to Markdown or JSON

AI web scraper and web scraping API: scrape any website to HTML, Markdown, or JSON. Blocked requests cost 0 credits, real status codes. Start free.

Free tier available
JSON responses
Real-time data

What Is the AI Web Scraper API?

FlyByAPIs AI Web Scraper API is a web scraping API that fetches any URL and returns it as HTML, LLM-ready Markdown, or structured JSON. Under the hood there are two fetch paths: plain HTTP with a real-browser TLS fingerprint, and a headless browser that solves anti-bot challenges. On top sits an AI web scraper layer for schema-based extraction and summaries. And one rule we think the whole category should follow: if you didn’t get data, you don’t pay. Available on RapidAPI starting at $0/month with 100 free requests.


Need more than an API? We also build custom endpoints, run done-for-you extractions delivered as CSV or JSON, and help you set up automated pipelines. If your use case does not fit the endpoints below, tell us what you need:


Scrape Any Website, Pay Only for What Works

Every response tells you exactly what happened and exactly what you paid: the real upstream status code (never masked), whether the page was blocked and by which anti-bot system, which fetch path won, and the precise credits billed. Blocked requests cost 0 credits.

1 credit

HTTP fetch

0 credits

Blocked requests

~2s

Typical response

Free

100 req/month

The default mode, render_js=auto, tries the cheap HTTP path first and escalates to the headless browser only when a site actually blocks it. Only the winning attempt is billed, never both. Output comes back the way you need it: raw HTML, clean Markdown with boilerplate stripped (main_content_only), plain text, CSS/XPath extraction rules, or free extras like title, links, emails, phone numbers, and tables. On top of that, three AI endpoints turn any page into structured JSON or a summary, without you writing a single selector.

Start free: see pricing plans

100 requests/month free · No credit card · Blocked requests never billed


Endpoints

EndpointDescription
/scrapeFetch any URL and return HTML, Markdown, or text, plus cookies, headers, redirect chain, block verdict, and optional CSS/XPath extraction.
/unlockRender the page in a headless browser, clear anti-bot challenges, and return the clearance cookies, user_agent, and session_id to replay on /scrape at the HTTP price.
/ai-extractDescribe the fields you want (schema or prompt) and get validated JSON back. Returns null instead of guessing when a field is not on the page.
/ai-generate-extraction-rulesThe model runs once against 1-3 sample pages and writes a reusable extract_rules object. Every future page of that layout costs fetch credits only.
/ai-summarizeSummary plus key points for any URL, in the page’s language or one you choose, with length control and your own focus instructions.

All five endpoints accept both GET and POST with the same parameters. Full parameter reference in the Web Scraper docs . Just need summaries without the full scraping toolkit? The AI Article Extractor & Summarizer API is the standalone version of /ai-summarize.


Code Examples (Python, JavaScript, cURL)

Turn any URL into LLM-ready Markdown in one call:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import requests

url = "https://ai-web-scraper-api1.p.rapidapi.com/scrape"

payload = {
    "url": "https://example.com/blog/some-article",
    "format": "markdown",
    "main_content_only": True,
    "render_js": "auto"
}

headers = {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "ai-web-scraper-api1.p.rapidapi.com"
}

response = requests.post(url, json=payload, headers=headers)
data = response.json()["data"]

print(data["render_used"], data["credits"], data["http_status"])
print(data["content"])  # clean Markdown, boilerplate stripped
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
const url = "https://ai-web-scraper-api1.p.rapidapi.com/scrape";

const response = await fetch(url, {
  method: "POST",
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "ai-web-scraper-api1.p.rapidapi.com",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    url: "https://example.com/blog/some-article",
    format: "markdown",
    main_content_only: true,
    render_js: "auto",
  }),
});

const { data } = await response.json();
console.log(data.render_used, data.credits, data.http_status);
console.log(data.content); // clean Markdown, boilerplate stripped
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
curl -X POST "https://ai-web-scraper-api1.p.rapidapi.com/scrape" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -H "X-RapidAPI-Host: ai-web-scraper-api1.p.rapidapi.com" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/blog/some-article",
    "format": "markdown",
    "main_content_only": true,
    "render_js": "auto"
  }'

Example JSON Response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
  "status": true,
  "request_id": "req_9f3a1c2e",
  "data": {
    "url": "https://example.com/blog/some-article",
    "http_status": 200,
    "blocked": false,
    "content_type": "text/html",
    "charset": "utf-8",
    "content": "# Some Article Title\n\nThe main content of the page as clean Markdown, with navigation, footer and boilerplate stripped out...",
    "render_used": "http",
    "credits": 1,
    "elapsed_ms": 1840
  }
}

That credits: 1 in the body is the whole philosophy in one field. If the browser had been needed, render_used would say "browser" and credits would say 5. If the site had blocked us, blocked would be true, block_reason would tell you why, and credits would be 0.


Features

  • Two fetch paths, one decision made for you: render_js=auto tries plain HTTP with a real-browser TLS fingerprint first and escalates to a challenge-solving headless browser only when needed. You are billed for the winning attempt only.
  • HTML, Markdown, or text output: format=markdown with main_content_only=true gives you clean, LLM-ready Markdown from any page in one call.
  • Free extras: title, meta, links, images, emails, phone_numbers, and tables, parsed from the same fetch at no extra cost.
  • CSS/XPath extract_rules: a ScrapingBee-compatible grammar, so existing extraction rules paste straight in. Hand-written or generated for you by AI.
  • AI extraction that doesn’t guess: /ai-extract returns validated JSON matching your schema, with null for fields the page doesn’t have. Never a plausible invention.
  • AI-generated rules, reusable forever: /ai-generate-extraction-rules runs the model once, writes validated selectors, and every future page of that layout costs fetch credits only. Nobody else in the category offers this.
  • A real web unlocker: /unlock mints clearance cookies, the browser’s user_agent, and a session_id. Replay them on /scrape and keep scraping the cleared site at the 1-credit HTTP price.
  • Honest diagnostics in every response: real upstream http_status (never masked), blocked with stable block_reason slugs, detected_protection naming Cloudflare, Akamai, DataDome, PerimeterX, or Imperva, render_used, and the exact credits billed.
  • Sticky sessions: session_id keeps the same exit IP across requests, on both fetch paths and all five endpoints, so pagination and cookie replay actually work.
  • Two exit pools per request: datacenter (1 credit HTTP / 5 browser) or isp static-residential trust for strict targets (5 / 20), each rate visible in the response.
  • GET and POST everywhere: same parameters, same behavior, so it works from a browser bar, a cron job, or the RapidAPI playground.

Use Cases

LLM and RAG Pipelines That Feed on Any URL

Turn any web page into clean Markdown for your embeddings or context window with format=markdown and main_content_only. One credit per page over HTTP, and the AI extraction layer is there when you need structured fields instead of prose.

Price Monitors Across Retailers That All Block Differently

Generate extraction rules once per store layout with /ai-generate-extraction-rules, then scrape every product page at fetch price. When a site is blocked, you pay nothing and the response names the anti-bot system, so your retry logic actually knows what to do.

Content Aggregators and Article Extraction

Pull the readable content out of news sites, blogs, and documentation with boilerplate stripped, plus free extras like title, links, and tables. Add /ai-summarize for a summary and key points in the page's own language, at a flat 5 extra credits.

Structured Data Without Writing a Single Selector

Data teams describe the fields they want as a JSON schema or plain English, and /ai-extract returns validated JSON. Missing fields come back as null, never as a plausible guess, so what lands in your warehouse is what was actually on the page.

Start building: view pricing

Free tier · No credit card · Cancel anytime


Why Developers Switch

There is a cost baked into this category that nobody itemizes on their pricing page. We call it the scraping tax: you pay for attempts that returned nothing, for JS-render surcharges on pages that never needed rendering, for an LLM run on every single page of the same layout, and for responses that mask the real status code so you can’t even tell what went wrong. None of that is data. All of it is billed.

And the alternative, building it yourself, means fighting the anti-bot arms race alone: TLS fingerprints, challenge pages, rotating proxies, layouts that shift under your parser. We fight that fight every day. Every endpoint is monitored 24/7, and when a source changes we ship the fix within hours. Here is where the tax hides:

Where the scraping tax hides

Building and maintaining your own scraper

Works on day one, then a target adds Cloudflare, then your parser breaks, then your proxies get flagged. The build is cheap. The upkeep is an engineer permanently on call for a pipeline that isn't your product.

APIs that hide what actually happened

You get a body and a vendor status code. Was the page really a 200? Was it a challenge page? Which anti-bot system fired? Without the real upstream status and a block reason, your retry logic is guessing, and every guess is billed.

$

AI extraction that runs an LLM on every page

Firecrawl and ScrapeGraphAI style extraction reruns the model on page 1 and on page 100,000 of the identical layout. Our rule generator runs the model once, writes validated selectors, and the other 99,999 pages cost fetch credits only.

$

JS-render surcharges whether you needed them or not

Turn on JS rendering as insurance and most vendors bill the premium rate on every call, rendered or not. Our auto mode tries the 1-credit HTTP path first and bills the browser rate only when the browser is what actually got your data.

To be fair: some of these tools are genuinely good at things we don’t do. Firecrawl’s SDK ecosystem is mature and pleasant to work with. What we refuse to copy is the meter.


See pricing plans

Free tier available. No credit card required


Comparison

Flyby AI Web ScraperFirecrawlScrapingBeeZenRowsBuild It Yourself
Blocked request cost0 creditsFailed attempts burn creditsDepends on error typeDepends on error typeProxy cost either way
Real upstream status code✓ Never maskedOwn error formatVendor-mapped codesVendor-mapped codes✓ Yes
JS render billingOnly when the browser winsPer-page creditsSurcharge when enabledSurcharge when enabledHeadless infra cost
AI extraction billingModel once, selectors reusableLLM on every pageAI cost per page✗ No AI extractionYour model bill
Unlock once, scrape at HTTP price✓ Yes✗ No✗ No✗ NoDIY session juggling
LLM-ready Markdown output✓ Yes, 1 credit✓ YesHTML-firstHTML-firstExtra parsing step
SDK ecosystemAny HTTP client, GET or POST✓ Mature SDKsOfficial clientsOfficial clientsN/A
Free tier100 req/mo, foreverOne-time creditsTime-limited trialTime-limited trialInfra cost from day 1
Maintenance required✓ None✓ None✓ None✓ None✗ Ongoing
Setup time< 5 min< 5 min< 5 min< 5 minWeeks

Are we the cheapest at every volume? Depends on your workload, so we won’t claim that. Here is what we do claim: our meter never charges you for a page you didn’t get, a render that wasn’t used, or a model run that produced nothing. Check any response, the numbers are right there.


Get Started in Minutes

  1. Sign up on RapidAPI , it’s free.
  2. Subscribe to the Basic plan (no credit card required).
  3. Copy your API key from the RapidAPI dashboard.
  4. Make your first request using the code examples above.

Every plan meters JS renders at requests/5 and AI operations at requests/6, which is exactly the credit ladder above mapped to your quota: no hidden multipliers, no fine print. And every week you keep running a homemade scraper is another week of proxy bills and emergency patches while your actual product waits. Long story short: start on the free tier. 100 requests a month, hard limit, no credit card, no surprise bill. Your first Markdown response is usually back in under 5 minutes.

Simple Pricing

Start Free, Scale as You Grow

All plans include full API access to every endpoint. No feature gating.

Basic

Free
  • 100 requests/month
  • 1,000 requests/hour
Start Free

Pro

$14.99 /mo
  • 100,000 requests/month
  • 2 requests/second
Choose Plan

Mega

$99.99 /mo
  • 1,500,000 requests/month
  • 6 requests/second
Choose Plan
Get in Touch

Need the Data Without the Hassle?

Custom extractions, enterprise plans, or just a quick question. We reply within 24 hours.

Message sent!

We'll get back to you within 24 hours. Check your inbox.

Reply within 24h
No commitment
Free consultation
FAQ

Frequently Asked Questions

Q How do I scrape a website without getting blocked?

Use FlyByAPIs AI Web Scraper API with render_js=auto: it tries a plain HTTP fetch with a real-browser TLS fingerprint first, and escalates to a headless browser that solves anti-bot challenges only if the site blocks the first attempt. You are billed only for the winning attempt, and if the site still blocks the request you pay 0 credits. The free plan includes 100 requests/month with no credit card.

Q How do I convert a web page to Markdown for my LLM?

Call FlyByAPIs AI Web Scraper API /scrape endpoint with format=markdown and main_content_only=true. You get the page's main content back as clean, LLM-ready Markdown with navigation, footers, and boilerplate stripped out. A standard HTTP fetch costs 1 credit and typically returns in about 2 seconds.

Q What is a web unlocker?

A web unlocker gets you past anti-bot walls like Cloudflare or DataDome. FlyByAPIs AI Web Scraper API has a dedicated /unlock endpoint: it renders the page in a headless browser, solves the challenge, and returns the clearance cookies, the browser's user_agent, and a session_id. Replay those three on /scrape and the site keeps serving cleared pages over the 1-credit HTTP path, no JavaScript rendering needed on later calls.

Q How does AI web scraping extract structured data from a website?

FlyByAPIs AI Web Scraper API has an /ai-extract endpoint: describe the fields you want as a JSON schema or a plain-English prompt and get validated JSON back, no CSS selectors needed. It returns exactly what is on the page and gives you null instead of a plausible guess when a field is missing. The AI step adds a flat 5 credits and is billed only when output is actually produced.

Q Do I pay for blocked or failed scraping requests?

No. With FlyByAPIs AI Web Scraper API a blocked request costs 0 credits, and the response tells you exactly why it was blocked: a block_reason slug plus detected_protection naming the anti-bot system (Cloudflare, Akamai, DataDome, PerimeterX, Imperva). Most web scraping APIs bill the attempt whether or not you got data back.

Q How much does it cost to scrape 100,000 pages a month?

FlyByAPIs AI Web Scraper API Pro plan is $14.99/month for 100,000 requests at 2 requests/second, with overage at $0.0002 per request instead of a forced upgrade. Standard HTTP fetches cost 1 credit each, and the free Basic plan gives you 100 requests/month to test with, no credit card required.

Q Can I use AI extraction without paying for a model run on every page?

Yes. FlyByAPIs AI Web Scraper API /ai-generate-extraction-rules endpoint runs the model once against 1-3 sample pages and writes a reusable CSS/XPath extract_rules object, validated against your samples. Every future page with that layout is then scraped with those rules for fetch credits only, typically 1 credit per page. The one-time generation adds 15 credits, and it is not billed if the rules match nothing.

Try It Free

Sign up, grab your API key, and make your first call in under 5 minutes.

Explore Our Other APIs

One RapidAPI account works across the whole FlyByAPIs suite. Every API starts free.