
Fetcha
Intelligent Web Access Infrastructure
One API. Multiple proxy networks. Reliable web access.
```bash
curl https://www.fetcha.co/v1/fetch -X POST \
-H "Authorization: Bearer $FETCHA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "country": "CA"}'
```
Fetcha takes a URL and figures out how to access it: which network class, which geography, whether a sticky session is
needed, when to retry and how to escalate — behind a single, provider-agnostic API with request IDs, usage metering,
a Playground and full request logs.
## Monorepo
| Path | What |
|---|---|
| `apps/web` | Next.js 16 — marketing site, docs, auth (Better Auth), dashboard, admin |
| `apps/api` | Fastify — public `/v1/*` API, health, internal endpoints for the dashboard |
| `packages/core` | Schemas, errors, SSRF policy, plans, ids |
| `packages/db` | Drizzle ORM schema + migrations (PostgreSQL) |
| `packages/providers` | Provider adapters (interchangeable, isolated) |
| `packages/routing` | Routing score, circuit breakers, execution engine |
| `packages/email` | Resend abstraction + React Email templates |
| `packages/sdk`, `sdk-python` | Official SDKs (JS/TS, Python) |
## Quick start (local)
```bash
pnpm install
cp .env.example .env # fill DATABASE_URL, REDIS_URL, AUTH_SECRET, RESEND_API_KEY, provider credentials
createdb fetcha && pnpm db:migrate && pnpm db:seed
pnpm dev:api & # http://127.0.0.1:8221
pnpm dev:web # http://localhost:8220
```
Tests: `pnpm test` · Typecheck: `pnpm typecheck` · Build: `pnpm build`.
## Status (v0.2.0 — private platform)
Live: Fetch API, auto routing (residential network class), sticky sessions, Playground, request logs, usage metering,
API keys, projects, admin console, docs, SDK source, managed browser rendering (`browser: true`, automatic escalation),
`format: "markdown"` + page metadata/links, crawl & map jobs (`/v1/crawl`, `/v1/map`). Private platform: invitation-only
signup, one unlimited plan, no billing. Coming: scripted browser actions, structured extraction,
teams, webhooks. See `/changelog`.