Skip to the page

Bright Data compatible

Keep the /request call, change the host.

Bright Data's Web Unlocker and SERP API both answer POST https://api.brightdata.com/request, at $1.5 per 1,000 requests on pay as you go. SpecStream answers the same call at https://api.specstream.ai/brightdata/request: $1 per 1,000 searches and $0.80 per 1,000 pages.

In code that posts to that address, the switch is one line and a SpecStream key as the Bearer token. @brightdata/sdk holds the address in a constant, so you point its endpoint table at SpecStream, and scrapeUrl and search.google run as before.

The SpecStream Search API scores 97.9 F-score on SimpleQA Verified and the Extract API 0.908 F1 on WCXB. Credit you buy never expires, and a new account gets $10 of credit, no card.

New accounts get $10 of credit, no card. It covers 10,000 searches or 12,500 pages.

Bright Data to SpecStream, field by field, from @brightdata/sdk 1.2.0 and Bright Data's docs on Nov 13, 2026

SpecStreamBright Data
AddressPOST https://api.specstream.ai/brightdata/requestPOST https://api.brightdata.com/request
The keyA SpecStream key as Authorization: Bearer, as the SDK sends itA Bright Data API token as Authorization: Bearer, from BRIGHTDATA_API_TOKEN in the SDK
Read a pageA body with any page url is one Extract API read. data_format markdown returns the page as markdownWeb Unlocker: {"zone":"YOUR_ZONE_NAME","url":"https://example.com","format":"raw"}. Returns clean HTML or JSON
SearchA body whose url is a Google, Bing or Yandex results address is one search of the live webSERP API: the same call with a results address such as https://www.google.com/search?q=pizza&hl=en&gl=us
Parsed resultsbrd_json=1 returns general, input, organic[] with link, display_link, title, description, rank and global_rank, and paginationbrd_json=1 in the results address returns the page as parsed JSON
Reply formformat raw returns the answer itself, json wraps it as status_code, headers and bodyformat is raw by default or json in the SDK
ZonesEvery zone name is accepted, the zone list answers and a zone creation succeeds, so autoCreateZones passes. FreeThe SDK creates sdk_unlocker and sdk_serp in your account when they are missing
SDK calls answeredscrapeUrl, search.google, search.bing, search.yandex, each with one input or a list, and listZonesThose, and the dataset, crawl, discover, Scraper Studio and Browser API calls of the SDK
Price$1 per 1,000 searches of up to 10 results, $0.80 per 1,000 pages. $1.5 buys 1,500 searches or 1,875 pages$1.5 per 1,000 requests on pay as you go, for SERP API and for Web Unlocker
Failed requestsNot charged. A page with no main text is not charged, and a search with no results is not chargedFailed requests are not billed. On a SERP zone with custom headers or cookies, all requests are billed
Free to start$10 of credit, no card, which never expires5,000 free credits per month, about $7.50, which do not roll over

The Bright Data request, on SpecStream

What else Bright Data users price

How SpecStream scores

The same numbers as the benchmarks page, from the official tasks and scorers.

How to migrate, step by step

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 10,000 searches or 12,500 pages.

2. In code that posts to Bright Data, set the address to https://api.specstream.ai/brightdata/request and send the SpecStream key as the Bearer token. In Python:

import requests

URL = "https://api.specstream.ai/brightdata/request"  # was https://api.brightdata.com/request

reply = requests.post(
    URL,
    headers={"Authorization": f"Bearer {SPECSTREAM_KEY}"},
    json={"zone": "sdk_serp", "url": "https://www.google.com/search?q=pizza&hl=en&gl=us&brd_json=1", "format": "raw"},
    timeout=60,
)
reply.raise_for_status()
for item in reply.json()["organic"]:
    print(item["rank"], item["title"], item["link"])

3. With @brightdata/sdk, replace the host in its endpoint table before you create the client, and pass the SpecStream key as apiKey:

const path = require("path");
const { bdclient } = require("@brightdata/sdk");

// The client takes no base address, so point its endpoint table at SpecStream first.
const constants = require(path.join(path.dirname(require.resolve("@brightdata/sdk")), "utils/constants.cjs"));
for (const [name, value] of Object.entries(constants.API_ENDPOINT)) {
  constants.API_ENDPOINT[name] = value.replace("https://api.brightdata.com", "https://api.specstream.ai/brightdata");
}

(async () => {
  const client = new bdclient({ apiKey: process.env.SPECSTREAM_API_KEY });
  const markdown = await client.scrapeUrl("https://en.wikipedia.org/wiki/Web_scraping", { dataFormat: "markdown" });
  const results = JSON.parse(await client.search.google("pizza restaurants", { country: "us" }));
  console.log(markdown.slice(0, 200), results.organic[0].link);
  await client.close();
})();

4. Read 429 as a call to send again after Retry-After. It is not charged. The SDK already retries a 429 by itself.

5. Keep your Bright Data token for the dataset, crawl and browser calls until you move those jobs to rows. Every drop-in address is listed on migrate.

Frequently asked questions

Something we didn't answer? Talk to a human

Can I change the base URL of @brightdata/sdk?
Not with an option in 1.2.0: the host is a constant. Replace https://api.brightdata.com with https://api.specstream.ai/brightdata in its API_ENDPOINT table before you create the client, and searches cost $1 per 1,000.
What is a Bright Data compatible API?
One that answers POST /request with Bright Data's body: zone, url, format and data_format. SpecStream does at https://api.specstream.ai/brightdata/request, at $1 per 1,000 searches and $0.80 per 1,000 pages.
How much does the Bright Data SERP API cost?
$1.5 per 1,000 requests on pay as you go, on Bright Data's pricing page. The same request on SpecStream is $1 per 1,000 searches of up to 10 results.
How much does Bright Data Web Unlocker cost?
$1.5 per 1,000 requests on pay as you go. On SpecStream a page read through the same call is $0.80 per 1,000 pages, and a page with no main text is not charged.
Do I need to create zones on SpecStream?
No, 0 zones to set up. Any zone name is accepted, and the zone list and zone creation calls the SDK makes are answered and cost nothing.
Which Bright Data SDK calls work on SpecStream?
4 of them: scrapeUrl, search.google, search.bing and search.yandex, with one input or a list, plus listZones. Dataset, crawl, discover, Scraper Studio and Browser API calls stay on Bright Data's addresses.

Sources

SpecStream wrote this page. Each Bright Data figure comes from Bright Data's own pages and its SDK's published code, and each other provider's figure from that company's own page. The route's behavior comes from its code and its tests with Bright Data's own client.

  1. @brightdata/sdk 1.2.0, constantsunpkg.com/@brightdata/[email protected]/dist/cjs/utils/constants.cjs, read Nov 13, 2026
  2. @brightdata/sdk 1.2.0, READMEunpkg.com/@brightdata/[email protected]/README.md, read Nov 13, 2026
  3. Bright Data SERP API pricingbrightdata.com/pricing/serp, read Nov 13, 2026
  4. Bright Data Web Unlocker pricingbrightdata.com/pricing/web-unlocker, read Nov 13, 2026
  5. Bright Data free tierdocs.brightdata.com/general/account/billing-and-pricing/free-tier, read Nov 13, 2026
  6. Bright Data Web Unlocker introductiondocs.brightdata.com/products/web-unlocker/introduction, read Nov 13, 2026
  7. Bright Data SERP API introductiondocs.brightdata.com/scraping-automation/serp-api/introduction, read Nov 13, 2026
  8. Bright Data SERP API pricing and billingdocs.brightdata.com/products/serp-api/pricing-and-billing, read Nov 13, 2026
  9. SerpApi pricingserpapi.com/pricing, read Nov 13, 2026
  10. Firecrawl pricingfirecrawl.dev/pricing, read Nov 13, 2026
  11. ScraperAPI pricingscraperapi.com/pricing/, read Nov 13, 2026
  12. Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 13, 2026
  13. SpecStream benchmarksspecstream.ai/benchmarks, read Nov 13, 2026
  14. SpecStream pricingspecstream.ai/pricing, read Nov 13, 2026
  15. SpecStream for agentsspecstream.ai/agents.md, read Nov 13, 2026