Crawl API. A whole website, as Markdown.
Send one URL and get every page on the site back as Markdown or HTML. Sitemaps, links, JavaScript and retries are handled for you, and you pay per page.
- 500 free credits every month
- No card to start
- Failed requests cost nothing
Crawl a site in a few seconds
The demo stops at 5 pages and shows up to 20,000 characters of each. Sign up to crawl whole sites and get every page in full.






The crawler you don't have to build.
Finding pages, fetching them and keeping track of a large job are the hard parts of crawling.
Finds every page
Pages are found from the links on each page, and from any sitemap or text file the crawl reaches. Start from a sitemap URL to crawl every page in it. Each URL is fetched once.
maxDepthStays where you point it
Limit how deep and how many pages a crawl goes, and include or skip URLs by pattern, so a crawl of /docs/ doesn't wander into the blog.
allowPatternsJavaScript rendering
Pages render in headless Chrome by default, so React and Vue sites return their content. Static sites can skip the browser for 0.25 credits a page.
renderJSBlocked pages retried
Failed pages are retried, and with proxyMode set to auto, a page that blocks the crawler goes through a premium proxy for 4 credits more.
proxyModeProgress you can watch
Large crawls run in the background. Check pages done, failed pages with the reason, and an estimated finish time, or cancel the job.
GET /crawl/{id}Webhooks and a ZIP
Get a signed webhook when a crawl starts, finishes or fails, or one for every page. When it's done, download every page in one ZIP.
webhookUrlTwo ways to run a crawl.
Wait for the pages in one request, or start a job for a whole site and collect the pages as they finish.
Wait for the pages
One request that returns every page in the response. Suits a docs section, a small site, or an agent that needs the pages now.
- Up to 500 pages
- Pages and credits in one JSON response
- If it runs out of time, you get the pages done so far, marked partial
Run it in the background
Starts a job and returns its ID straight away. Suits whole sites, and pipelines that load pages as they come in.
- Up to 10,000 pages
- Progress, errors and a trace with
GET /crawl/{id} - Webhooks as pages finish, and a ZIP at the end
What customers say.
“Found Geekflare API to get markdown from URL for my AI agents. It is fast and cheaper and works on almost every website.”
Ram DasiArchitect, PA Consulting“After trying many scraping services, I selected Geekflare to scrape public directories. Mainly for two reasons - it is cheaper and fast.”
“Documentation was easy to follow. We were scraping dynamic pages within hours. Very reliable service.”
The parameters you'll use most.
What each one does and what it costs.
- urlstring—
Where the crawl starts. Any public URL.
- maxPagesnumberIncluded
The most pages to fetch. Defaults to 500, the most
/crawl/syncallows./crawlallows up to 10,000. - maxDepthnumberIncluded
How many links away from the start URL to go. Defaults to 3.
- allowPatternsstring[]Included
Only crawl URLs that match one of these patterns, e.g. "/docs/*".
- denyPatternsstring[]Included
Skip URLs that match, e.g. "/tag/*" or "/login".
- includeExternalbooleanIncluded
Follow links to other domains. Defaults to false.
- formatstringIncluded
markdown or html. Defaults to markdown.
- renderJSboolean0.25 to 1 a page
Render pages in headless Chrome. Defaults to true. Set false for static sites.
- proxyModestring+4 a page if used
auto uses a premium proxy only for pages that block the crawler. true always uses one.
- proxyCountrystring+4 a page
Crawl through a premium proxy in this country, e.g. "de".
- webhookUrlstringIncluded
HTTPS URL that gets job events. Add webhookEvents with crawl.page for one call per page.
| Parameter | Type | What it does | Credits |
|---|---|---|---|
| url | string | Where the crawl starts. Any public URL. | — |
| maxPages | number | The most pages to fetch. Defaults to 500, the most /crawl/sync allows. /crawl allows up to 10,000. | Included |
| maxDepth | number | How many links away from the start URL to go. Defaults to 3. | Included |
| allowPatterns | string[] | Only crawl URLs that match one of these patterns, e.g. "/docs/*". | Included |
| denyPatterns | string[] | Skip URLs that match, e.g. "/tag/*" or "/login". | Included |
| includeExternal | boolean | Follow links to other domains. Defaults to false. | Included |
| format | string | markdown or html. Defaults to markdown. | Included |
| renderJS | boolean | Render pages in headless Chrome. Defaults to true. Set false for static sites. | 0.25 to 1 a page |
| proxyMode | string | auto uses a premium proxy only for pages that block the crawler. true always uses one. | +4 a page if used |
| proxyCountry | string | Crawl through a premium proxy in this country, e.g. "de". | +4 a page |
| webhookUrl | string | HTTPS URL that gets job events. Add webhookEvents with crawl.page for one call per page. | Included |
POST /crawl/sync returns up to 500 pages in the response. POST /crawl runs a background job of up to 10,000 pages. The endpoint reference has the full list.
Endpoint referenceWhat people use it for.
A knowledge base from a docs site
Point it at a product's documentation and load every page into a vector store. Markdown keeps the headings, so chunks split where the sections do.
- Every page under /docs/, and nothing else
- Headings kept for clean chunk boundaries
- Re-crawl on a schedule to keep answers current
POST /crawl
{
"url": "https://docs.example.com/",
"allowPatterns": ["/docs/*"],
"maxPages": 2000,
"format": "markdown"
}Your first crawl, in a few lines.
# pip install requests
import requests
response = requests.post(
"https://api.geekflare.com/crawl/sync",
headers={"x-api-key": "<api-key>"},
json={"url":"https://example.com","maxPages":10},
)
print(response.json())One API. Every stack.
One account works from an agent, a workflow builder, an SDK or your own service.
MCP server
Sign in once and Claude, ChatGPT, Cursor or Codex can use Geekflare's tools directly, with no glue code to write.
LLM & agent pipelines
LLM-ready Markdown straight into a retrieval pipeline, with the boilerplate stripped so you spend context on content, not navigation.
Workflow builders
Run any endpoint as a step in a visual scenario. Useful when the person who needs the data does not write code.
SDKs & REST
First-party typed SDKs for Python and Node. Everything else talks plain REST, from any language.
How many pages each plan crawls.
A crawl is charged per page, at the same rate as a scrape, with no charge per job. Failed pages cost nothing.
| Covered per month | Free $0/mo No card | Starter $19/mo | Most popular Growth $69/mo | Business 500K $299/mo | Business 1M $499/mo |
|---|---|---|---|---|---|
Credits a month | 500 | 20,000 | 100,000 | 500,000 | 1,000,000 |
Pages without a browserStatic sites, with renderJS set to false.0.25 credits | 2,000 | 80,000 | 400,000 | 2,000,000 | 4,000,000 |
Pages with JavaScriptRendered in headless Chrome, the default.1 credit | 500 | 20,000 | 100,000 | 500,000 | 1,000,000 |
Pages with a premium proxyFor pages that block the crawler, or when you pick a country.5 credits | – | 4,000 | 20,000 | 100,000 | 200,000 |
| Requests per second | 1 | 5 | 10 | 25 | 25 |
- Free$0/moNo card
- Credits a month
- 500
- Pages without a browser0.25 credits
- 2,000
- Pages with JavaScript1 credit
- 500
- Pages with a premium proxy5 credits
- –
- Requests per second
- 1
- Starter$19/mo
- Credits a month
- 20,000
- Pages without a browser0.25 credits
- 80,000
- Pages with JavaScript1 credit
- 20,000
- Pages with a premium proxy5 credits
- 4,000
- Requests per second
- 5
- GrowthMost popular$69/mo
- Credits a month
- 100,000
- Pages without a browser0.25 credits
- 400,000
- Pages with JavaScript1 credit
- 100,000
- Pages with a premium proxy5 credits
- 20,000
- Requests per second
- 10
- Business 500K$299/mo
- Credits a month
- 500,000
- Pages without a browser0.25 credits
- 2,000,000
- Pages with JavaScript1 credit
- 500,000
- Pages with a premium proxy5 credits
- 100,000
- Requests per second
- 25
- Business 1M$499/mo
- Credits a month
- 1,000,000
- Pages without a browser0.25 credits
- 4,000,000
- Pages with JavaScript1 credit
- 1,000,000
- Pages with a premium proxy5 credits
- 200,000
- Requests per second
- 25
Before you write the integration.
Everything else is in the endpoint docs, and our support team replies to every email.
Open the endpoint docsrenderJS: false, and 5 credits for a page that goes through a premium proxy. There's no charge for the crawl itself. Pages that fail cost nothing. Each page's cost is in pages[].credits, and the total in creditsConsumed.https://example.com/sitemap.xml. A URL is fetched once, however many pages link to it. GET /crawl/{id}/trace shows how any page was reached from the start URL.allowPatterns to crawl only matching URLs, such as "/docs/*", and denyPatterns to skip others. maxDepth limits how many links away from the start URL it goes, and maxPages caps the total. Links to other domains are skipped unless you set includeExternal.POST /crawl/sync waits for the crawl and returns up to 500 pages in the response. Use it for small sites, sections of a site and agent calls. POST /crawl starts a background job of up to 10,000 pages and returns its ID straight away. Check progress with GET /crawl/{id}, get a webhook when it finishes, and download the pages as a ZIP.estimatedCredits for crawling them. It costs 1 credit per 1,000 URLs found, and nothing if it finds none. A crawl also stops when your credits run out, and marks the result as partial.proxyMode: "auto", a page that blocks the crawler goes through a premium proxy for 4 credits more. Some heavily protected sites may still block it.robots.txt and avoid collecting personal information.Ask AI about Geekflare
Open the question in the assistant you already use.
Start with 500 free credits a month.
No card needed. That covers up to 2,000 pages without a browser, or 500 with JavaScript.