# TypeScript Scrape SDK (https://www.scrape-sdk.com/docs)

Canonical: https://www.scrape-sdk.com/docs
Markdown: https://www.scrape-sdk.com/docs.md



Scrape SDK is a provider-neutral web client for TypeScript agents. It talks to real vendor APIs, fails over on retryable errors, and returns one typed result shape.

```ts title="scraper.ts"
import { createScrapeClient } from "scrape-sdk";
import { firecrawl } from "scrape-sdk/firecrawl";
import { jina } from "scrape-sdk/jina";
import { local } from "scrape-sdk/local";

export const scraper = createScrapeClient({
  providers: [
    firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY! }),
    jina(),
    local(),
  ],
});

const page = await scraper.scrape("https://stripe.com/docs", {
  format: "markdown",
  onlyMainContent: true,
});
```

Use `search()` when you do not have a URL, `crawl()` for a site, and `extract()` for JSON Schema. Providers that cannot perform an operation are skipped.

## Read next [#read-next]

<Cards>
  <Card title="Install" href="/docs/installation" description="npm, CLI, and the agent skill." />

  <Card title="Quickstart" href="/docs/quickstart" description="scrape, search, crawl, extract." />

  <Card title="Providers" href="/docs/providers" description="What each adapter actually calls." />

  <Card title="AI SDK tools" href="/docs/guides/vercel-ai-sdk" description="createTools() with inputSchema." />

  <Card title="MCP" href="/docs/guides/model-context-protocol" description="Official SDK stdio server." />

  <Card title="For agents" href="/docs/agents" description="llms.txt, JSONL, and raw Markdown." />

  <Card title="API" href="/docs/api-reference/create-scrape-client" description="Client config and methods." />
</Cards>