Integrations

Can I use the Firecrawl SDK with UpRock?

Yes, for scrape. Create the client with api_url set to https://edge.uprock.com and your UpRock API key, and scrape returns the same Document the SDK always returns, with markdown, html, rawHtml, links and metadata. Crawl, map, search and batch scrape aren't available on UpRock; keep Firecrawl for those.

Updated · Read as markdown

Change two values

UpRock answers Firecrawl's scrape request at https://edge.uprock.com/v2/scrape (and /v1/scrape for the older client) and returns Firecrawl's response shape. So the official SDKs work once you change the API URL and the key. Get a key at uprock.ai/app/api-keys.

Python

# pip install firecrawl-py   env: UPROCK_API_KEYimport osfrom firecrawl import Firecrawl​app = Firecrawl(api_key=os.environ["UPROCK_API_KEY"], api_url="https://edge.uprock.com")​doc = app.scrape("https://example.com", formats=["markdown", "links"])print(doc.metadata.title, doc.metadata.status_code)print(doc.markdown[:200])print(doc.links)

TypeScript

// npm i @mendable/firecrawl-js   (Node 18+)   env: UPROCK_API_KEYimport Firecrawl from "@mendable/firecrawl-js";​const app = new Firecrawl({ apiKey: process.env.UPROCK_API_KEY, apiUrl: "https://edge.uprock.com" });​const doc = await app.scrape("https://example.com", { formats: ["markdown", "links"] });console.log(doc.metadata?.title, doc.metadata?.statusCode);console.log(doc.markdown?.slice(0, 200));console.log(doc.links);

Both print Example Domain 200, the page's markdown and its links. The page is loaded in a real browser on an opted-in device, so a fresh scrape usually takes 10 to 40 seconds.

What works and what doesn't

We ran each call below with firecrawl-py 4.55.0 and @mendable/firecrawl-js 4.52.0 against the live API on 8 Nov 2026.

Call or optionOn UpRock
scrape with formats markdown, html, rawHtml, linksWorks. Returns a Document with the formats you asked for and metadata (title, url, sourceURL, statusCode, contentType)
location={"country": "DE"}Works. The page is loaded from a device in that country (ISO code); we checked DE and JP against ipinfo.io
mobile=TrueWorks. Loads the page on a mobile device
Formats summary, json, screenshot, changeTracking400, raised as BadRequestError: unsupported format
crawl, start_crawl, map, search, batch_scrape404, raised as FirecrawlError ... Status code 404. Keep Firecrawl for these
app.v1.scrape_url / app.v1.scrapeUrl (old v1 client)Works

Errors come back in Firecrawl's format, so the SDK raises its usual exceptions: a missing or wrong key raises UnauthorizedError, and a page that couldn't be loaded raises InternalServerError in Python or SdkError in TypeScript.

Keep Firecrawl, add UpRock as the backup

Because it's the same SDK, the backup is a second client. Send a page to UpRock only when Firecrawl fails on it:

# pip install firecrawl-py   env: FIRECRAWL_API_KEY, UPROCK_API_KEYimport osfrom firecrawl import Firecrawl, FirecrawlError​primary = Firecrawl(api_key=os.environ["FIRECRAWL_API_KEY"])backup = Firecrawl(api_key=os.environ["UPROCK_API_KEY"], api_url="https://edge.uprock.com")​def scrape(url, **options):    try:        return primary.scrape(url, **options)    except FirecrawlError:        return backup.scrape(url, **options)​doc = scrape("https://example.com", formats=["markdown"])print(doc.markdown[:200])

This retries on every Firecrawl error. To retry only blocked, rate-limited and timed-out pages, check the status code first: the Firecrawl comparison has that version and when each failure is worth a second try.

We ran this with a deliberately invalid Firecrawl key on 8 Nov 2026: Firecrawl raised UnauthorizedError, and the backup client returned the page from UpRock.

FAQ

Do I change anything besides the URL and the key?

Not for scrape. The same call, the same options and the same Document come back. Formats Firecrawl has and UpRock doesn't (summary, json, screenshot and others) return a 400, which the SDK raises as BadRequestError.

Can I set FIRECRAWL_API_URL instead of changing code?

In JavaScript, yes. @mendable/firecrawl-js 4.52.0 reads FIRECRAWL_API_URL when you don't pass apiUrl. firecrawl-py 4.55.0 doesn't read it and still calls api.firecrawl.dev, so in Python pass api_url when you create the client.

Which base URL should I use?

https://edge.uprock.com, with no path. The JavaScript SDK also works with https://edge.uprock.com/compat/firecrawl, but the Python SDK drops any path and calls /v2/scrape on the host, so the host root is the one that works in both.

Does the old v1 client work?

Yes. app.v1.scrape_url in Python and app.v1.scrapeUrl in JavaScript call /v1/scrape, which UpRock also serves. Both returned markdown and metadata in our test.

What does a scrape cost?

One credit per page delivered, which is $0.50 per 1,000 pages by card or USDC and $0.40 with UPT. mobile set to true is billed as a mobile crawl, $0.75 per 1,000. A failed scrape isn't charged.

Other use cases to explore

References

Get started

Add UpRock in one paste.

Paste this into Claude Code, Codex, Cursor or any agent with a terminal. It reads our docs, sets up the MCP server or CLI, and tells you the cost before it spends anything.

Set up UpRock for me: read https://uprock.ai/agents.md, connect the UpRock MCP server, and run one test crawl. Tell me what it costs before you spend anything.

Can I use the Firecrawl SDK with UpRock? | UpRock AI