Firecrawl is a scraping API, and branding is one of the formats that a scrape can return. One POST with a page address returns how that page looks. The response has color roles, fonts and sizes, spacing, and button and input styles. It also has the logo and images, three words of personality, and confidence scores. It reads one page, not the company.
The request
curl https://api.firecrawl.dev/v2/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://linear.app", "formats": ["branding"]}'
You can combine the branding format with other formats, for example markdown or screenshot, in the same request. The Firecrawl OpenAPI spec writes each format as an object ({"type": "branding"}). The Firecrawl examples send the string. The scrape endpoint also works without an API key, at limits that Firecrawl does not publish.
The response
We ran this request in the Firecrawl playground, which shows the branding object alone. The API returns the object at data.branding.
POST /v2/scrapeFirecrawl branding format{"colorScheme": "dark","colors": {"primary": "#E4F222",1In no other response for Linear."background": "#08090A","textPrimary": "#8A8F98"},"fonts": [{ "family": "Inter", "role": "body" }, …],"typography": { "fontSizes": { "h1": "64px", … } },2Context.dev read the same h1 as 72px."spacing": { "baseUnit": 4, "borderRadius": "8px" },"logo": "data:image/svg+xml;utf8,%3Csvg …",3Inline SVG, white. Returned twice."personality": { "tone": "minimalist", "energy": "low", … },4The only field about voice."confidence": { "overall": 0.9216666666666666, … }5Not in the documented fields.}The full branding object is in /data.json under responses.firecrawl-branding.
What is not in it?
- A description, positioning and rules are not in it.
personalitygives three single words. - A date is not in it. By default, Firecrawl serves a cached copy up to 2 days old. To read the page again, set
maxAgeto 0. - Three fields that the docs list were not in the response for Linear:
icons,animationsandlayout.
Empty and failed responses
| Status | What it means |
|---|---|
| 400 | The body is bad or the URL is not valid. Firecrawl refuses social profile URLs with branding |
| 401 | The key is missing, malformed or revoked |
| 402 | No credits are left. The free plan has no pay-as-you-go |
| 408 | The page took too long to load. Retry with backoff |
| 429 | The per-minute limit or the concurrent-browser limit was reached. Wait for Retry-After |
| 500, 502, 503 | The server failed. Retry with backoff |
Firecrawl does not charge for a scrape that returns no document. A page that loads with an error status, for example a 404 page, comes back as a document. Firecrawl charges for it as a scrape.
Plans
As of 11 November 2026, Firecrawl has a free plan that needs no card, with a limit of 10 scrapes a minute. Its cheapest paid plan, Hobby, is $19 a month, or $16 billed annually. Firecrawl's pricing page shows what each plan includes. Over the Model Context Protocol (MCP), firecrawl_scrape on mcp.firecrawl.dev reads a page. Firecrawl does not document how to pass the branding format through it.
Last updated 11 November 2026