API Docs

Technical guide for developers

Build applications using Minifetch

Overview

Search, scrape, extract & SEO audit web pages. Minifetch is a hosted toolkit for developers and AI agents. Always pay-per-fetch, no subscription. This documentation covers the main endpoints available for developers, details about accessing the Minifetch API as well as example data. All API endpoints return responses in JSON format.

The Minifetch API Client has a Quick Start for Javascript or TypeScript if you're looking to add it to your project quickly.

Full API docs are also available for AI agents at llms.txt →

Features
Use Cases

Working in a regulated space? By default, every response's proxy block records the user agent and whether robots.txt was obeyed, so how the data was gathered is on the record, per request.

Quick Start

Minifetch is pay-per-fetch. No setup fee, no monthly fee, no charges for blocked or errored pages. Price per fetch are listed on each API endpoint below. First, pick your payment method:

1. Credit Card

Sign up on the dashboard to get free starter credits worth 25 audits, then top up with your credit card later for as little as $2.

2. USDC on Base or Solana

Pay directly from your crypto wallet. Just load your wallet with USDC on Base or Solana and you're ready. No "gas token" (ETH or SOL) required. No Minifetch account setup required.

Then click whichever access method fits your setup:

Browser

Visit the Minifetch homepage or hit any API endpoint URL directly using your browser's address bar. The default on the homepage is the full technical SEO audit. Great for trying out the service. If you want full API access, try the other options below.

Curl + API Key

Sign up, create an API key from the dashboard, and query endpoints from your CLI:

curl "https://minifetch.com/api/v1/run/seo-page-audit?url=https://anthropic.com" \
            -H "Authorization: Bearer [your_api_key]"
Minifetch API Client NEW

The minifetch-api client is an NPM package purpose-built for Javascript or TypeScript. The simplest way to integrate Minifetch into a Node.js app. Works with both API keys and USDC stablecoin. Recommended for agents and agent builders.

Agent Access

For agents that need to pay at runtime without human sign-up. If you're building an agent yourself, the Minifetch API client above is usually the better starting point.

Coinbase Payments MCP gives AI assistants like Claude Desktop a built-in wallet to discover and pay for x402 services with no code. One command, email sign-in, no private key.

npx @coinbase/payments-mcp

The installer configures your MCP client (Claude Desktop, Claude Code, Gemini CLI, etc). Once it's funded, ask your assistant to search the x402 Bazaar for "Minifetch" — every Minifetch endpoint shares that name and comes back together in one search. For more details point your AI assistant at the SEO Page Audit skill file.

Agentic Wallets (awal) is Coinbase's wallet infrastructure for autonomous agents: non-custodial, keys isolated, with programmable spending limits and gasless USDC trades on Base. Recommended for programmatic and agent-to-agent usage.

npx awal

Once funded, your agent can call Minifetch with any x402-compatible client (e.g. @x402/fetch) or skip the client entirely by adding awal's pay-for-service skill.

npx skills add coinbase/agentic-wallet-skills

API Base URL

The Minifetch API client will handle this for you. All API requests will be made to:

https://minifetch.com

Request Methods

Every endpoint below accepts GET (parameters in the query string) or POST (parameters as a JSON body with Content-Type: application/json). Use whichever fits your client; the response is identical. Over POST, booleans may be real JSON booleans (e.g. "omitEmpty": true); over the query string they are the string "true". The method you call Minifetch with is never forwarded: the target page is always fetched with GET.

curl -X POST "https://minifetch.com/api/v1/extract/url-metadata" \
        -H "Authorization: Bearer [your_api_key]" \
        -H "Content-Type: application/json" \
        -d '{"url":"https://example.com","fields":"title,description,og","omitEmpty":true}'

Endpoint: Search by Keyword (Paid)

/api/v1/search/keyword
/api/v1/x402/search/keyword
Price & Request Methods

$0.002

GET | POST
Use Cases

Web Search, AI Agents & RAG Pipelines, Content Discovery, SEO Research

Description

Keyword web search by Ceramic.ai that returns ranked results as structured JSON: a title, URL, and text snippet per result. The discovery entry point for agents and RAG pipelines: search to find relevant pages, then go deeper on any result with the free /preflight/url-check and then the paid /extract endpoints. Use limit to cap results and descriptionLength to trim each snippet (0 = titles and URLs only) for desired token efficiency.

Request Parameters:
Parameter Type Required Description
query string Yes Keyword(s) to search for. Maximum 50 characters.
limit integer No Number of results to return, 1–10. Default 10. Out-of-range values are clamped to the nearest bound.
descriptionLength integer No Maximum characters of each result's description snippet, 0–5000. Default 750. 0 returns titles and URLs only. Out-of-range values are clamped to the nearest bound.
Example Request:
https://minifetch.com/api/v1/search/keyword?query=green+tea
https://minifetch.com/api/v1/search/keyword?query=green+tea&limit=5&descriptionLength=0
Example Response Data:
Status Codes:

Endpoint: URL Check (Free)

/api/v1/free/preflight/url-check
Price & Request Methods

Free

GET | POST
Use Case

Call this endpoint before the paid endpoints.

Description

Free check to see if a target URL's robots.txt file allows Minifetch to scrape & extract. Returns whether the URL is allowed and the crawl-delay Minifetch will observe (defaults to 1 second so Minifetch never hammers servers or slows it down for real users). Call this before making requests to the paid /extract and /run/seo-page-audit endpoints. If the the target URL is blocked and the site is not yours, use the external proxy routes. If the target URL is blocked and the site is yours or to set a custom crawl-delay, read the tutorial: How To Allow Minifetch to Fetch Your Pages. Just edited your robots.txt or crawl-delay? Add &fresh=true to skip Minifetch's 24-hour robots.txt cache and confirm your change registered (check the minifetchCache object in the response to ensure it was freshly fetched). Note: this is the one Minifetch endpoint that does not follow redirects.

Request Parameters:
Parameter Type Required Description
url string Yes The target URL to check against robots.txt
fresh boolean No If true, bypasses Minifetch's 24-hour robots.txt cache and re-fetches robots.txt for this check. Use it right after editing your robots.txt or crawl-delay (or adding/removing a Minifetch block) to confirm the change took effect. The minifetchCache object shows whether the result was served from cache ("hit": true) or freshly fetched ("hit": false).
Example Request:
https://minifetch.com/api/v1/free/preflight/url-check?url=https://example.com
https://minifetch.com/api/v1/free/preflight/url-check?url=https://example.com&fresh=true
Example Response Data:
{
  "success": true,
  "results": [
    {
      "data": {
        "url": "https://example.com",
        "allowed": true,
        "message": "robots.txt not found, defaulting to allowed",
        "crawlDelay": 1,
        "proxy": {
          "proxyType": "minifetch",
          "userAgent": "minifetch/1.0 (+https://minifetch.com/site-owner-faq)"
        },
        "minifetchCache": {
          "hit": false,
          "cachedAt": "2026-08-16T18:22:10.000Z",
          "expiresAt": "2026-08-17T18:22:10.000Z"
        }
      }
    }
  ]
}
Status Codes:

Endpoint: Extract URL Metadata (Paid)

/api/v1/extract/url-metadata
/api/v1/x402/extract/url-metadata
Price & Request Methods

$0.002

GET | POST
Use Cases

Metadata Extraction, SEO Research & Competitive Analysis, AI Agents & Automation Pipelines

Description

Extracts rich structured metadata from a URL: favicons, title, description, canonical, meta tags, Open Graph, Twitter Card, JSON-LD, redirects, headers, performance, headings, images. Every field maps directly to a ranking signal or competitive intelligence data point. Returns everything by default; query params narrow response (pass atomic field names, ex: ?fields=title,description or named groups: network,meta,og,twitter). ?omitEmpty=true trims tokens for AI agents.

Blocked, or the page needs JavaScript? Use the external proxy routes.

Request Parameters:
Parameter Type Required Description
url string Yes The target URL from which to extract metadata
fields string No Comma-separated selection to narrow the response to only the fields you need: atomic field names (e.g. title), named groups (network, meta, og, twitter), and/or meta:<name> for a specific page meta tag. Returns all fields when omitted, blank, or null; an unknown field returns a 400.
omitEmpty boolean No If true, drops empty fields (empty string, [], {}) from the response for token efficiency.
includeResponseBody boolean No If set to true, includes the full HTML response body as string in result.
Example Request:
https://minifetch.com/api/v1/extract/url-metadata?url=https://example.com
https://minifetch.com/api/v1/extract/url-metadata?url=https://example.com&fields=title,description,og&omitEmpty=true
Example Response Data:
Status Codes:

Endpoint: Extract URL Content (Paid)

/api/v1/extract/url-content
/api/v1/x402/extract/url-content
Price & Request Methods

$0.002

GET | POST
Use Cases

Content Extraction, Answer Engine Optimization (AEO), Generative Engine Optimization (GEO), Link Analysis

Description

Returns clean markdown from a page after nav, ads, and scripts are stripped. Can also be used by site owners auditing AI readability: See what survives for AEO, GEO and AI search.

Blocked, or the page needs JavaScript? Use the external proxy routes.

Request Parameters:
Parameter Type Required Description
url string Yes The target URL from which to extract content
includeMediaUrls boolean No If set to "true", includes the page's image URLs (url + alt, from <img> tags) as mediaUrls
Example Request:
https://minifetch.com/api/v1/extract/url-content?url=https://apnews.com/article/time-person-of-year-2025-77ec65c6792bc99ec2ce1919c5f421ea&includeMediaUrls=true
Example Response Data:
Status Codes:

Endpoint: Extract URL Preview (Paid)

/api/v1/extract/url-preview
/api/v1/x402/extract/url-preview
Price & Request Methods

$0.001

GET | POST
Use Cases

Content Extraction, Branding & Identity, Generative Engine Optimization (GEO), Link Analysis, AI Agents & Automation Pipelines

Description

Extracts all fields used for a page's share previews: the lightweight cards that represent the page on social platforms, chat apps, and AI.

Blocked, or the page needs JavaScript? Use the external proxy routes.

Request Parameters:
Parameter Type Required Description
url string Yes The target URL from which to extract the preview
Example Request:
https://minifetch.com/api/v1/extract/url-preview?url=https://github.com
Example Response Data:
Status Codes:

Proxy Routes (Paid)

/api/v1/proxy/extract/{endpoint}
/api/v1/proxy/render/extract/{endpoint}
/api/v1/x402/proxy/extract/{endpoint}
/api/v1/x402/proxy/render/extract/{endpoint}
Price & Request Methods
GET | POST
Endpoint Native /proxy /proxy/render
Extract URL Metadata $0.002 $0.003 $0.004
Extract URL Content $0.002 $0.003 $0.004
Extract URL Preview $0.001 $0.002 $0.003
Extract URL Links $0.002 $0.003 $0.004
Use Cases

Pages that block Minifetch, JavaScript-rendered pages, Geo-targeted pages

Description

For scraping pages the native Minifetch /extract endpoints can't reach. Add /proxy before /extract in the route path to fetch through an external rotating proxy (webscrapingapi.com). Add /proxy/render to also execute the page's JavaScript in a headless browser before extraction. Available for url-metadata, url-links, url-preview and url-content. Same request parameters and response data as the native endpoint, except:

Not sure which to use? Run the free /preflight/url-check first: allowed means try the cheaper Minifetch native endpoint, blocked means use /proxy. Use /proxy/render if the content you need is missing. No charge for blocked or errored pages.

Request Parameters:

All parameters of the native endpoint, plus:

Parameter Type Required Description
country string No Two-letter country code (ISO 3166-1 alpha-2) to fetch from, e.g. us, de. Omit to let the proxy choose. An invalid code returns a 400.
Example Request:
https://minifetch.com/api/v1/proxy/extract/url-metadata?url=https://example.com
https://minifetch.com/api/v1/proxy/render/extract/url-content?url=https://example.com&country=de
Example Response Data:

The proxy block on a /proxy/render response:

{
  "proxyType": "managed",
  "provider": "webscrapingapi.com",
  "proxyUrl": "https://api.webscrapingapi.com/v2",
  "userAgent": "unknown",
  "render": true,
  "country": "de",
  "robotsTxt": {
    "allowed": null
  }
}
Status Codes:

Endpoint: Run SEO Page Audit (Paid)

/api/v1/run/seo-page-audit
/api/v1/x402/run/seo-page-audit
Price & Request Methods

$0.01

GET | POST
Use Cases

Technical SEO Page Audits, SEO Research, Pre-publish Page Checks, Site Migrations & Verification, Agent-Orchestrated Site Monitoring

Description

Runs a full technical SEO page audit on a URL. Verify redirects, headers, missing or conflicting canonicals, JSON-LD, indexability and more. Composes our /preflight + /url-metadata + /url-links endpoint data into a structured pass/ warn/ fail report. No black-box scoring; just deterministic, composable signal you can act on or pipe into an agent. Audit rules are documented in the audit results UI and in the audit skill file.

Request Parameters:
Parameter Type Required Description
url string Yes The target URL to run the audit on
Example Request:
https://minifetch.com/api/v1/run/seo-page-audit?url=https://example.com
Example Response Data:
Status Codes:

Error Responses

Error responses are never charged.

results[0].error.message on a failed fetch is exactly one of the strings below in the response body. The minifetch-api client embeds it in a longer error message, so match with a contains check, not equality.

error.message Status When
invalid url 400 missing, malformed or unsupported url
robots blocked * 502 robots.txt disallows the minifetch user agent
upstream forbidden * 502 target returned 403
upstream rate limited * 502 target returned 429
upstream unavailable * 502 target returned 503
upstream not found 502 target returned 404
upstream bad request 502 target returned 400
upstream unauthorized 502 target returned 401
upstream payment required 502 target returned 402 (paywalled)
upstream error 502 any other target 4xx/5xx, or the connection failed
upstream too many redirects 502 redirect chain too long
dns lookup failed 502 domain does not resolve
queue timeout 503 timed out waiting on the site's crawl-delay
fetch error 503 target timed out or the fetch failed
proxy provider error 503 the external proxy provider failed (/proxy/ routes only)
server error 500 unclassified failure

* the target blocked Minifetch. On the /extract endpoints, retry via the /proxy/ routes.

results[0].error.statusCode, when present, is the target's HTTP status (ex: 403), not Minifetch's. It is absent when the target never answered (ex: robots blocked). results[0].data.url is the post-redirect URL when known, else null.

Security

Untrusted Content

Minifetch does not sanitize the content it returns. Every field, including titles, descriptions, links, and /url-content bodies, is authored by the remote page and must be treated as untrusted. Output sanitization is the caller's responsibility. The content is inert data and does not execute on its own, but you must sanitize it before use:

SSRF Protection

Minifetch is protected against server-side request forgery. It fetches only public http and https URLs. Requests to private, internal, loopback, link-local, reserved, and cloud metadata addresses are refused, including DNS rebinding attempts. localhost and private-network URLs will not fetch.

How We Fetch Web Pages

Minifetch offers two ways to fetch a page: the native Minifetch proxy or a rotating external proxy. The native Minifetch proxy is identified, respects robots.txt and is cheapest. The external proxy reaches pages the native one can't. You choose per fetch, by choosing the API route for your use-case. Built to be orchestrated by agents and humans who want maximal control.

Native Minifetch proxy External proxy
Routes /extract /proxy/extract, /proxy/render/extract
Fetches as Identified minifetch user agent from a fixed IP External rotating proxy (webscrapingapi.com), optional country
robots.txt Respected, including crawl-delay Not checked
JavaScript Not executed Executed on /proxy/render
Cached Yes No, every call is a fresh fetch
Price Cheapest Native price plus a surcharge, see Proxy Routes

Not currently available on either proxy: authenticated or logged-in content.

Rate Limiting & Caching

Libraries & SDKs

Minifetch.com is the hosted version of a free and open-source npm package called url-metadata that has been serving the NPM community for 10+ years. During that time some users expressed a preference for a hosted service for various reasons, mostly technical hurdles with coding or accidentally triggering blocks from websites when using the open-source package.

For direct integration with your codebase, consider:

minifetch-apiNEW — the official Minifetch API client for Javascript/ Typescript

npm install minifetch-api --save

url-metadata — the open-source npm package that powers Minifetch

npm install url-metadata --save

Both from the same creator with 4 Million+ downloads over 10 years.
Add them to your project with confidence.

🤖 Agent Skills (SKILL.md)

Task-specific step-by-step guides for AI agents using the Minifetch API:

View all agent skills →
Full API docs as llms.txt →

Contact

To leave feedback or join the bulk credits waitlist:
use our feedback form.

If you have questions or need assistance:
join our Discord server.

While you're at it, give us a follow on X.com (Twitter):
@minifetch