The open web, delivered as clean, structured data
Shoal is one API to fetch, traverse, seek, and watch any site on the internet — built for the agents, pipelines, and products that never stop asking the web questions.
Usage-based pricing from $19/month · cancel anytime
from shoal import Shoal
client = Shoal(api_key="sk_live_...")
page = client.fetch.create(
url="https://example.com/pricing",
formats=["markdown", "screenshot"],
)
print(page.markdown)Trusted by data & AI teams shipping fast
One account, every way to pull data from the web
Each endpoint does one job well — combine them into the pipeline your product actually needs, from a single page fetch to a million-URL sweep.
One page, every format
Point Fetch at a URL and get back rendered Markdown, HTML, plain text, a PDF, or a full-page screenshot — JavaScript included, no headless browser to babysit.
- JS-rendered pages
- Screenshots & PDF export
- Custom actions before capture
Follow a site, not just a page
Traverse walks a domain the way a reader would — following links to a depth you set, filtering by path, and handing back clean content for every page it visits.
- Depth & path controls
- Sitemap-aware
- Dedupes near-identical pages
Every URL, mapped in seconds
Chart reads a site's sitemaps and on-page links to hand you the full list of reachable URLs, ready to filter and feed straight into a Traverse or Bulk job.
- Sitemap + link discovery
- Pattern filtering
- Paginated for large sites
Ask the web a question
Seek takes a plain-language query and returns ranked, relevant links from across the open web — the retrieval half of retrieval-augmented generation, done for you.
- Natural-language queries
- Ranked, deduped results
- Region & recency controls
Grounded answers, not guesses
Brief searches, reads, and synthesizes an answer to a question in the JSON shape you define — and says so plainly when the web doesn't have a confident answer.
- Source-grounded synthesis
- Typed JSON output
- Explicit when unverifiable
Let the web tell you when it changes
Describe what matters — a price, a headline, a new listing — and Watch checks on your schedule, surfacing only the deltas that actually happened.
- Scheduled checks
- Diff-only alerts
- Email, webhook, or SMS
Thousands of URLs, minutes not days
Hand Bulk a list of up to ten thousand URLs and get structured results back in one pass — then run as many Bulk jobs in parallel as your pipeline needs.
- Up to 10k URLs per job
- Parallel job scheduling
- Aggregate or per-URL output
An SDK that gets out of your way
Typed clients for Python and Node, a predictable REST surface underneath, webhook events for every long-running job, and metadata on every response — so you spend your time on the pipeline, not the plumbing.
from shoal import Shoal
client = Shoal(api_key="sk_live_...")
result = client.fetch.create(
url="https://en.wikipedia.org/wiki/Alexander_the_Great",
formats=["markdown", "html"],
)
print(result.markdown_content)99.9%
API uptime, measured monthly
6.2B+
Pages processed to date
<900ms
Median time to first byte
60%
Typical cost drop vs. self-hosted scraping
Six problems Shoal already solves
Different job titles, same underlying need: turn the public web into data a system can act on.
Describe the pipeline. Shoal builds it.
Autopilot turns a plain-language instruction into a working, scheduled data pipeline — chaining Fetch, Traverse, Seek, and Watch behind the scenes so you don't have to wire each call by hand.
Describe it
“Track every new job posting from these 40 competitors, weekly.”
Shoal plans it
Chart discovers URLs, Watch schedules the checks, Brief structures the output.
It runs itself
A live pipeline, versioned and editable, delivering JSON on your schedule.
Teams that stopped babysitting scrapers
“We ripped out a homegrown fleet of headless browsers in an afternoon. Shoal's Bulk endpoint now does the same job for a third of the infra cost.”
“Autopilot is the part that sold the team. We describe a research workflow in a sentence and it comes back as a working pipeline, not a demo.”
“Our lead enrichment used to break every time a target site changed its markup. It hasn't broken once since we moved it onto Shoal's parsers.”
“Watch caught a competitor's price change four hours before our old scraper would have even run. That gap is the whole product now.”
“Support answered a scaling question on a Saturday. That's rare enough in this category that it's basically why we stayed.”
“We index a few hundred thousand pages a week for search grounding. Shoal is the only provider we tested that didn't fall over past 50k.”
Plug into the stack you already run
Shoal ships as an MCP server, a CLI, and typed SDKs — so it drops into coding agents, orchestration frameworks, and no-code tools alike.
AI coding assistants
Give an in-editor agent live web access without leaving the IDE.
Orchestration frameworks
Drop Shoal in as a tool call in whatever framework already runs your agents.
No-code automation
Wire web data into a workflow builder without writing an integration by hand.
MCP-compatible clients
Register once, then call Shoal's tools from any client that speaks MCP.
Pay for successful requests. Nothing else.
No bandwidth fees, no proxy line-items, no charge for failed calls — just usage-based plans that scale with you.
Builder
For a side project or an internal tool that's started to matter.
- 6,000 successful requests / month
- JS rendering + rotating residential IPs
- 100 concurrent requests
- Email support
Team
The plan most growing product and data teams settle on.
- Everything in Builder, plus:
- 150,000 successful requests / month
- 400 concurrent requests
- Autopilot pipelines included
Scale
For teams running production pipelines against millions of pages.
- Everything in Team, plus:
- 750,000 successful requests / month
- 800 concurrent requests
- Priority infrastructure & routing
Good to know before you integrate
Shoal is a web data API: one interface for fetching, crawling, searching, and monitoring public web content, returned as clean Markdown, HTML, or structured JSON. It's built for teams whose product or pipeline depends on the open web, so you don't have to run browsers, proxies, or parsers yourself.
Give your agents a real connection to the web
Simple usage-based pricing, priced to scale, and built by people who'd rather ship your feature than argue about proxies.