billing
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBright Data - Billing
Bright Data - 计费
Two questions come up: what has this account already spent, and what will this job cost? The first has an exact answer from the account's own numbers. The second is always an estimate, so say so.
通常会出现两个问题:这个账户已经花了多少钱?这项任务将花费多少?第一个问题可以根据账户自身的数据得到准确答案;第二个问题始终只能估算,因此必须明确说明这一点。
Read-only, no exceptions
仅限读取,绝无例外
Read the numbers, report them, stop. Never add or change a payment method, never top up a balance, never set auto-recharge, never change a plan, never buy a dataset, never cancel anything. Those actions belong to the person, not the agent, even when the user asks the agent to do them. Send them to brightdata.com/cp/billing/settings and let them click it themselves.
Never run a real job to find out what the account can do or what something costs. A Web Unlocker request, a scraper trigger and a browser session all spend money. Every read below is free and starts nothing.
读取数据、报告结果,然后停止。绝不添加或更改支付方式,绝不充值余额,绝不设置自动充值,绝不更改套餐,绝不购买 dataset,绝不取消任何服务。即使用户要求 Agent 执行这些操作,它们也应由用户本人完成。将用户引导至 brightdata.com/cp/billing/settings,让其自行点击并完成操作。
绝不能为了查明账户能做什么或某项操作的费用而运行真实任务。Web Unlocker 请求、抓取器触发操作和浏览器会话都会产生费用。以下每项读取操作都是免费的,并且不会启动任何任务。
The reads
读取操作
| The question | Command | Endpoint behind it |
|---|---|---|
| How much money is left | | |
| What one zone cost | | |
| What all active zones cost | | |
| What each product, zone, dataset or domain cost | no CLI command, call it directly | |
| What scraping cost | no CLI command, call it directly | |
| Which zones exist, including deleted ones | no CLI command, call it directly | |
| Which website ate the budget | no CLI command, call it directly | |
| How many records a snapshot delivered | no CLI command, call it directly | |
Base host is and auth is the header . Read the key from the environment or the CLI's own store. The exact file path for each OS, and the safe way to read it without printing it, live in the skill's auth reference. That reference also has the thing that trips agents here: after a CLI login, is unset, and that is normal rather than a sign the machine is logged out, because login writes the key to the CLI's store and never to the environment. Never ask the user to paste a key into the conversation, and never print one: to check that a key exists, run from the skill, never , or the credentials file or the variable.
https://api.brightdata.comAuthorization: Bearer <key>agent-onboardingBRIGHTDATA_API_KEYnode scripts/check-auth.mjsagent-onboardingcatechojq/zone/cost| 问题 | 命令 | 对应 Endpoint |
|---|---|---|
| 账户还剩多少钱 | | |
| 一个 zone 花了多少钱 | | |
| 所有活跃 zone 总共花了多少钱 | | |
| 每项 product、zone、dataset 或 domain 分别花了多少钱 | 无 CLI 命令,直接调用 | |
| 抓取费用是多少 | 无 CLI 命令,直接调用 | |
| 存在哪些 zone,包括已删除的 zone | 无 CLI 命令,直接调用 | |
| 哪个网站消耗了预算 | 无 CLI 命令,直接调用 | |
| 一个 snapshot 交付了多少条记录 | 无 CLI 命令,直接调用 | |
基础主机地址为 ,认证方式是在 header 中使用 。从环境变量或 CLI 自身的存储中读取 key。各操作系统对应的文件路径,以及在不打印密钥的情况下安全读取它的方法,都记录在 skill 的 auth reference 中。该 reference 还说明了这里最容易让 Agent 踩坑的一点:执行 CLI 登录后, 会被取消设置。这是正常现象,并不表示机器已退出登录,因为登录会将 key 写入 CLI 的存储,而不会写入环境变量。绝不要要求用户将 key 粘贴到对话中,也绝不要打印 key。要检查 key 是否存在,应在 skill 中运行 ;绝不要对凭据文件或该变量使用 、 或 。
https://api.brightdata.comAuthorizationBearer <key>agent-onboardingBRIGHTDATA_API_KEYagent-onboardingnode scripts/check-auth.mjscatechojq/zone/costWhich key can read this
哪些 key 可以读取这些数据
API keys carry one of five permission levels: Admin, Finance, Ops, User and Limit. Billing and cost data needs Finance or Admin, and Finance is the least-privileged one that works, so prefer it. Use a Finance key directly in the header for these reads: expects a full-access key, so keep the CLI logged in with an Admin key and the Finance key for the API. Only account admins create or change keys, at brightdata.com/cp/setting/users. A 401 means the key is missing, revoked or wrong. A 403 means the key is real but under-privileged for billing, so name the missing access instead of retrying. A Finance key may not read product data such as snapshots or Studio jobs, and that split is fine: report the half you can read and say which access the other half needs. A 404 means a wrong or expired snapshot, job or dataset id, while a wrong zone name answers 422.
Authorizationbdata login --api-keyAPI key 携带以下五种权限级别之一:Admin、Finance、Ops、User 和 Limit。计费及成本数据需要 Finance 或 Admin 权限,而 Finance 是满足需求且权限最低的级别,因此应优先使用它。对于这些读取操作,可直接在 header 中使用 Finance key; 要求使用 full-access key,因此应让 CLI 保持使用 Admin key 登录,同时在 API 调用中使用 Finance key。只有账户管理员才能创建或更改 key,操作入口为 brightdata.com/cp/setting/users。401 表示 key 缺失、已被撤销或使用错误。403 表示 key 有效,但没有读取计费数据所需的权限;此时应明确指出缺少哪种权限,而不是重试。Finance key 可能无法读取 snapshot 或 Studio job 等产品数据;这种权限拆分是正常的:报告你能读取的那部分,并说明另一部分需要哪种访问权限。404 表示 snapshot、job 或 dataset id 错误或已过期,而 zone 名称错误会返回 422。
Authorizationbdata login --api-keyUsing the budget commands well
正确使用预算命令
Three habits make the output reliable. Always pass and to and , so the figure covers exactly the window you asked about. For the pending charge, read from directly. And when you need machine-readable output, call the endpoint rather than the balance command.
bdata budget--from--tobudget zonebudget zonespending_costsGET /customer/balanceBefore writing any parsing code, read for the field lists and the live response samples, including how the date parameters behave ( is exclusive on these endpoints).
references/cost-api.mdto有三种做法可以确保 的输出可靠。调用 和 时始终传入 和 ,确保数字恰好覆盖用户询问的时间范围。对于待收取的费用,直接从 读取 。需要机器可读的输出时,应调用 endpoint,而不是使用 balance 命令。
bdata budgetbudget zonebudget zones--from--toGET /customer/balancepending_costs在编写任何解析代码之前,先阅读 ,了解字段列表和实时响应示例,包括日期参数的行为方式(这些 endpoint 的 为排他结束日期)。
references/cost-api.mdtoWhat a job will cost before it runs
任务运行前的预计费用
No endpoint returns a quote, so never present one as if it came from the API. Build the estimate in three steps and label it an estimate.
- Find the billing unit for the product. Web Unlocker and SERP bill per successful request, and failed requests are not charged, with one exception: enabling custom headers or cookies bills every request. A SERP request that returns several result pages is still one request. Web Scraper API bills per delivered record, and attempts that fail because of incorrect inputs still bill. Scraper Studio bills per page load, with file downloads charged separately per GB. Browser API and the proxy networks bill per GB of traffic, and some proxy plans are a fixed charge per IP instead.
- Count the units, not the inputs. One input is not one record. Five listing URLs that each hold twenty products produce a hundred records. A batch of ten URLs is ten separate billable requests. Pagination pages, detail pages and extra navigations each count as page loads in Scraper Studio.
- Use the account's own rate, not the public price list. Accounts on custom pay-as-you-go or pre-commit plans have their own rates, so the public list may not apply. For Web Unlocker and SERP you can compute the real rate: ask for a period with
/zone/costandfrom, then divide thetobucket'scustomby its request count. When the bucket carries bothcostandreqs_unblocker, divide by their sum, because the cost is one combined figure for the zone (live). For Web Scraper API the record count is a read (reqs_serp,GET /datasets/v3/snapshots?dataset_id=<id>) and the dollars are in the cost export, per dataset underdataset_size(live) or per snapshot underweb_apiswhere attributed, so compute the real per-record rate when the reads return data. If the account has no past usage, read its own plan fromws_api_snaps(Admin or Finance key; the plan withGET /pricing_plans, itsis_current: true, whereproduct_pricesis per 1,000 requests). Only if that read is refused, open the public list atreq(for Web Scraper API,brightdata.com/pricing) and say it is the list price, not this account's rate. Never quote a price from memory, since prices change. In the reply, name the source you read.brightdata.com/pricing/web-scraper
没有任何 endpoint 会返回报价,因此绝不能将估算结果描述为来自 API 的报价。估算分为三个步骤,并必须明确标注为估算。
- 确定产品的计费单位。 Web Unlocker 和 SERP 按成功请求计费,失败请求不收费,但有一个例外:启用自定义 headers 或 cookies 后,每个请求都会收费。即使一次 SERP 请求返回多个结果页,它仍然只算一个请求。Web Scraper API 按交付的记录数计费,因输入错误而失败的尝试仍会收费。Scraper Studio 按页面加载次数计费,文件下载则按 GB 单独收费。Browser API 和代理网络按流量 GB 计费,但部分代理套餐采用每个 IP 收取固定费用的方式。
- 计算计费单位,而不是输入数量。 一个输入不等于一条记录。五个 listing URL,每个包含 20 个 product,共产生 100 条记录。一批 10 个 URL 是 10 个独立的可计费请求。在 Scraper Studio 中,分页页面、详情页面和额外的导航操作都会分别计为页面加载。
- 使用账户自身的费率,而不是公开价格表。 使用自定义 pay-as-you-go 套餐或 pre-commit 套餐的账户拥有自己的费率,因此公开价格表可能并不适用。对于 Web Unlocker 和 SERP,可以计算实际费率:使用带有 和
from的to查询一个时间段,然后将/zone/costbucket 的custom除以其请求数。当该 bucket 同时包含cost和reqs_unblocker时,应除以二者之和,因为该 cost 是 zone 的合并数值(实时)。对于 Web Scraper API,记录数可通过一次读取获得(reqs_serp,读取GET /datasets/v3/snapshots?dataset_id=<id>),金额则位于 cost export 中:实时数据按dataset_size下的 dataset 列出,或在可以归因时按web_apis下的 snapshot 列出。因此,当这些读取返回数据时,可以计算出真实的每条记录费率。如果账户没有历史用量,则从ws_api_snaps读取其套餐(需要 Admin 或 Finance key);选择GET /pricing_plans的套餐,读取其is_current: true,其中product_prices表示每 1,000 个请求的价格。只有当该读取被拒绝时,才打开 brightdata.com/pricing 上的公开价格表;对于 Web Scraper API,应打开 brightdata.com/pricing/web-scraper,并说明这是标价,而不是该账户的费率。绝不要凭记忆引用价格,因为价格会发生变化。在回复中必须说明所读取信息的来源。req
Free credits
Free credits
Every eligible account gets 5,000 free credits a month from one shared pool. They reset on the first of the month and unused credits are forfeited rather than carried over. Web Unlocker, SERP and Web Scraper API spend one credit per request or record, and Scraper Studio spends one per page load. The Browser API draws on the same pool at 5 credits per MB of traffic (in effect from 2026-09-01), so the full monthly allowance covers close to 1 GB of browser traffic. Accounts on custom pay-as-you-go plans and on pre-commit plans get no monthly free credits.
The proxy networks are not covered. New accounts instead get a one-time $2 trial credit for the proxy products, valid 7 days, and a further $5 for adding a payment method, valid 30 days. All of these figures are from the docs. The registration completion call returns a brand-new account's (, , ) once, at signup (the skill, No account yet). None of the billing reads above return them.
entitlementsmonthly_creditstrial_credit_usdtrial_daysagent-onboardingFree credits are not in any billing API. No balance field counts them, and the field on is dollars, not a credit count. Free-tier and trial state live in the control panel at brightdata.com/cp/billing/overview under Free Tier Credits, which also shows the renewal date. Send the user there rather than guessing, and never read a money balance of zero as proof that the free credits are gone. They are separate pools.
credit/customer/balance每个符合条件的账户每月可获得 5,000 个 free credits,这些额度来自一个共享池。额度在每月 1 日重置,未使用的额度会作废,不能结转。Web Unlocker 和 SERP 每请求消耗 1 个 credit,Web Scraper API 每条记录消耗 1 个 credit,Scraper Studio 每次页面加载消耗 1 个 credit。Browser API 同样从该共享池扣减,每 MB 流量消耗 5 个 credits(自 2026-09-01 起生效),因此完整的月度额度可覆盖接近 1 GB 的浏览器流量。使用自定义 pay-as-you-go 套餐和 pre-commit 套餐的账户不会获得每月 free credits。
代理网络不在免费额度范围内。新账户会获得一次性 $2 的代理产品试用 credit,有效期为 7 天;添加支付方式后还会获得额外 $5,有效期为 30 天。以上数字均来自文档。注册完成调用会在注册时一次性返回全新账户的 (、、),相关信息位于 skill 的 No account yet 部分。上述任何计费读取操作都不会返回这些字段。
entitlementsmonthly_creditstrial_credit_usdtrial_daysagent-onboardingFree credits 不包含在任何计费 API 中。 没有任何 balance 字段会计入这些额度,而且 上的 字段表示美元金额,而不是 credit 数量。Free tier 和 trial 状态位于控制面板 brightdata.com/cp/billing/overview 的 Free Tier Credits 部分,该处还会显示续期日期。应将用户引导到那里,而不是进行猜测;绝不能把金额余额为 0 当作 free credits 已用尽的证据。它们是彼此独立的额度池。
/customer/balancecreditWhat an MCP tool call bills as
MCP 工具调用如何计费
For "what did my agent's tool call cost". Which tools are turned on (, ) never changes what anything costs. and its batch variant bill as one request per query, , and as one Web Unlocker request per URL, as Web Scraper API records delivered, and as Browser API bandwidth. The credential makes no difference: a Remote client on and one on OAuth 2.1 reach the same tools and draw on the same account credits, so an OAuth client spends the credits of whichever Bright Data account its user signed in to, which may not be this one.
groups=tools=search_enginescrape_as_markdownscrape_as_htmlscrape_batchrun_scraperscraping_browser_*?token=对于“Agent 的工具调用花了多少钱”这类问题,需要了解哪些工具已启用(、)绝不会改变任何费用。 及其 batch variant 按每次 query 计为 1 个请求;、 和 按每个 URL 计为 1 个 Web Unlocker 请求; 按 Web Scraper API 实际交付的记录数计费; 按 Browser API 带宽计费。凭证本身没有区别:使用 的 Remote client 与使用 OAuth 2.1 的 client 会访问相同的工具,并扣除同一个账户的 credits。因此,OAuth client 消耗的是其登录用户所对应的 Bright Data 账户的 credits,该账户可能不是当前账户。
groups=tools=search_enginescrape_as_markdownscrape_as_htmlscrape_batchrun_scraperscraping_browser_*?token=Read next
接下来阅读
- Before calling any of these endpoints: references/cost-api.md - exact paths, parameters, real response shapes, the eleven cost dimensions, and which facts are verified live against an account rather than only read in the docs.
- When a read is refused: the skill. A missing or invalid key gives 401 with a short plain-text body on these endpoints, and
agent-onboardingfrom the CLI. Both mean log in.No API key found
- 调用上述任何 endpoint 之前:references/cost-api.md——包含精确路径、参数、真实响应结构、11 个成本维度,以及哪些事实已针对账户进行实时验证,而不只是从文档中读取。
- **读取操作被拒绝时:**使用 skill。在这些 endpoint 上,缺失或无效的 key 会返回 401 及一段简短的纯文本响应,而 CLI 会返回
agent-onboarding。两者都表示需要登录。No API key found
Red flags
危险信号
- Adding a payment method, topping up, or changing a plan on the user's behalf
- Running a real job, or a single test request, to find out what something costs
- Reading from a live balance response instead of
pending_balancepending_costs - Treating every key of a cost export as a date, so gets added to the days
total - Reporting a zone cost without and
--from--to - Adding to
back_m0, or assumingback_d0is present in every bucketbw - Reporting an empty cost export as proof of no spend, without the cross-check described in
productsreferences/cost-api.md - Quoting public list prices as though they were this account's rate
- Asking the user which plan or zone they use when and
/zone/get_all_zonesanswer it/zone?zone= - Presenting an estimate as if it were a quote from the API, which has no estimate endpoint
- Echoing a raw response, which contains the zone password.
/zone?zone=prints only a summary without it (on CLI 0.4.1 itsbdata budget zone <name>and--jsonare taken by the parent--prettycommand and ignored); use it, orbudget, for cost/zone/cost - Printing an API key, or asking the user to paste one into the chat
- 代表用户添加支付方式、充值余额或更改套餐
- 为查明费用而运行真实任务或单个测试请求
- 从实时 balance 响应中读取 ,而不是
pending_balancepending_costs - 将 cost export 中的每个 key 都视为日期,从而把 加到各天之和上
total - 报告 zone cost 时未提供 和
--from--to - 将 加到
back_m0上,或假定每个 bucket 中都存在back_d0bw - 未按 所述使用
references/cost-api.md进行交叉核对,就将空的 cost export 当作没有消费的证据products - 将公开标价当作该账户的实际费率
- 在 和
/zone/get_all_zones可以回答问题时,仍询问用户使用哪个套餐或 zone/zone?zone= - 将估算结果描述为来自 API 的报价,但该 API 并不提供估算 endpoint
- 原样输出 响应,因为其中包含 zone password。
/zone?zone=只打印不包含密码的摘要(在 CLI 0.4.1 中,其bdata budget zone <name>和--json会被父级--pretty命令占用并忽略);查询费用时应使用该命令或budget/zone/cost - 打印 API key,或要求用户将 key 粘贴到聊天中