Search1API
Compatible APIs

Firecrawl

Use Firecrawl's scrape and search endpoints with Search1API by changing the API URL and key, including which Python clients keep the URL path.

Search1API answers Firecrawl's single-page scrape and search, in both API versions: POST /v1/scrape, /v2/scrape, /v1/search and /v2/search. Set the Firecrawl API URL to:

https://api.search1api.com/compat/firecrawl

Authenticate with your Search1API key as Authorization: Bearer YOUR_API_KEY, as the Firecrawl SDKs do.

Configure your client

import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({
  apiKey: process.env.SEARCH1API_KEY,
  apiUrl: 'https://api.search1api.com/compat/firecrawl',
});
const page = await firecrawl.scrape('https://hono.dev/docs/', { formats: ['markdown'] });
const results = await firecrawl.search('hono cloudflare workers', { limit: 5 });
from firecrawl import AsyncFirecrawl

firecrawl = AsyncFirecrawl(
    api_key="YOUR_API_KEY",
    api_url="https://api.search1api.com/compat/firecrawl",
)
page = await firecrawl.scrape("https://hono.dev/docs/", formats=["markdown"])
results = await firecrawl.search("hono cloudflare workers", limit=5)

For synchronous code, use the v1 client:

from firecrawl import V1FirecrawlApp

firecrawl = V1FirecrawlApp(
    api_key="YOUR_API_KEY",
    api_url="https://api.search1api.com/compat/firecrawl",
)
page = firecrawl.scrape_url("https://hono.dev/docs/", formats=["markdown"])

Choose firecrawl as the web search engine or web loader, enter your Search1API key as the Firecrawl API key, and set:

FIRECRAWL_API_BASE_URL="https://api.search1api.com/compat/firecrawl"

firecrawl-py's default Firecrawl client cannot use this URL

In firecrawl-py 4.x, the default synchronous client (Firecrawl, also exported as FirecrawlApp) builds request URLs from the host of api_url and drops its path, so https://api.search1api.com/compat/firecrawl becomes https://api.search1api.com/v2/scrape and the request fails with 404. Use AsyncFirecrawl or V1FirecrawlApp as shown above; both keep the path. Libraries built on the default client, including LangChain's FireCrawlLoader and LlamaIndex's Firecrawl reader, are affected in the same way.

Scrape

url is required. The page is returned as Markdown in data.markdown, with data.metadata.title, sourceURL, url and statusCode.

Only Markdown is produced. Other entries in formats, such as html, links or screenshot, are ignored and their fields are absent. onlyMainContent, waitFor, timeout, actions and other page options are ignored.

FieldBehavior
queryRequired.
limitDefault 10 in v2 and 5 in v1, up to 50 per source.
sources (v2)web, news and images, as strings or { "type": … } objects. Default ["web"].
tbsqdr:h and qdr:d (day), qdr:w, qdr:m and qdr:y.
langPrimary language of the results.
includeDomains, excludeDomainsRestrict or exclude sites.
scrapeOptions.formatsAny non-empty list reads each web and news result page and adds markdown and metadata to the result.

As in Firecrawl, results do not include page content unless scrapeOptions.formats is set.

v2 returns data.web (url, title, description, position), data.news (title, url, snippet, date, position) and data.images (imageUrl, url, position) for the requested sources. When a source fails while others succeed, the response includes a warning. v1 returns data as a list of { url, title, description }.

Credits

RequestCredits
Scrape1
Search1 for each source
Search with scrapeOptions.formats1 for each source, plus 1 for each page read

Not supported

Crawl, batch scrape, map, extract and other job endpoints return 404. For full-site work, use Search1API's /deepcrawl and /sitemap.

Errors

Errors return { "success": false, "error": "message" } with the status code. A page that cannot be read returns 502, which the Firecrawl JavaScript SDK retries before raising an error.

On this page