Web Search to Markdown
We pull live Google search results through Serper.dev and convert the top 3 pages to clean, AI-ready Markdown — in one request. No scraping, no boilerplate.
How it works
One request. Three sources. Clean Markdown out.
Type a query
Enter anything you’d type into Google. We search via Serper.dev with USA results by default.
Top 3 extracted
The first three organic results are fetched in parallel and converted to Markdown via Cloudflare’s native pipeline — same engine that powers / and /crawl.
Copy or pipe
Browse sources here, or hit /search/<query> directly to get a single combined .md file ready for your LLM.
API Reference
Search the web programmatically. No authentication required.
q, n, gl, hl, retain_images, format. Defaults to JSON for POST.Default response is combined Markdown. Add ?format=json for a structured envelope with per-source metadata, extraction methods, and the original Serper results.
Search Options
Tune the request via query string or POST body.
Rate limits: 30 searches/minute per IP, 500/day per IP, and a global hard cap of 60,000/day across all callers.
Frequently Asked Questions
Everything you need to know about Web Search.
How is this different from /crawl?
/crawl walks an entire site you already know about — great for docs, blogs, or product pages. /search goes the other way: you give it a question and it finds the most relevant pages on the open web, then converts the top 3 to Markdown in one round-trip. Use /search for research, RAG ingestion, or grounding an LLM answer in fresh sources.Where do search results come from?
/search request hits Serper live. Markdown extraction of the resulting pages reuses the same edge cache as the rest of markdown.new (5-minute TTL).How is the markdown extracted?
toMarkdown(), (3) Browser Rendering. The fastest tier that succeeds wins. The method field in the JSON response shows which one ran for each source.Can I get more than 3 results?
?n=5 (the hard cap). Higher values would burn your daily Serper budget too fast. The full Serper response always includes 10 organic results in the JSON envelope, so you can pick others to extract manually via the URL converter.Why does the URL look ugly with dashes?
/search/best-iphone becomes the query best iphone. If you need a literal dash, URL-encode the space instead: /search/coca-cola%20zero → coca-cola zero.What happens if a page can’t be extracted?
extraction failed badge and the original Serper snippet. The other sources are not affected — each extraction runs independently in parallel.