DataForSEO API: Setup, Pricing and Cost per Task
How much does a DataForSEO API job cost?
Updated
The DataForSEO API bills by task, by item and by row, so one Standard SERP costs $0.0006 and one million Labs items sent as 1,000 tasks of 1,000 items cost $132.
The unit prices come first, then three jobs with the arithmetic shown, so you can redo each sum with your own volumes. For the OpenSEO setup that runs on this key, read the Semrush alternative guide.
We may earn a commission from some links on this page.
Related guides: digital marketing tools directory.
per SERP of 10 results, Standard queue
per SERP on Live, up to 6 seconds
minimum top-up, and the balance never expires
Live Google Ads request cap
The short version
- You prepay a balance with a $50 minimum top-up. Each request draws from it, and the balance never expires.
- Use the Standard queue for scheduled work. It costs $0.0006 per SERP, and Live costs $0.002.
- Depth multiplies the bill. Top 100 costs ten times top 10 in the same check.
- A bulk Backlinks call checks 50 domains for about $0.03 in one task, if each domain bills one row. Fifty single calls cost about $1.20.
- Test first with the $1 trial credit and the free Sandbox. Set a daily cost limit before any large run.
Set up the account
From signup to the first call
Five steps, and one 24-hour window for the password.
Credentials sit in the API Access tab of the dashboard. DataForSEO generates the API password for you, and it differs from your account password. The authentication docs set the rules for every call.
- 1Create a free account at DataForSEO.
- 2Verify your email, your phone or both. New accounts cannot call the API until verification is done (error 40104).
- 3Open the API Access tab at app.dataforseo.com/api-access and note the API login and password.
- 4Encode login:password in Base64, or copy the ready-made string.
- 5Send a first request to the Sandbox, then switch to production.
echo -n 'YOUR_LOGIN:YOUR_API_PASSWORD' | base64The -n flag matters. It stops the trailing newline from entering the encoded string, which would break the credentials.
curl -X POST "https://sandbox.dataforseo.com/v3/serp/google/organic/task_post" \
-H "Authorization: Basic YOUR_BASE64_STRING" \
-H "Content-Type: application/json" \
-d '[{"keyword": "dataforseo api", "location_name": "United States", "language_name": "English", "depth": 10}]'A good response carries a status code from 20000 to 29999, both for the request and for each task. Check that range before you parse anything else.
- Base64 is encoding, not encryption. Anyone with the string can decode it, so store it like a password.
- Send the credentials in the header only. Query parameters do not work, and no separate login call is needed.
- The API password and the ready-made string show for 24 hours after registration. After that, click Send by e-mail to get them again.
- Automation tools such as Make and n8n ask for the email and the API password, then build the header for you.
- Request bodies are UTF-8 JSON. Responses are JSON by default, and adding .xml to the path returns XML.
- Official clients exist for TypeScript, Python, Java, PHP and C#.
Test for free: the $1 trial credit and the Sandbox
What each one proves, and what it does not.
New accounts get a $1 trial credit. DataForSEO says it covers around 500 live Google SERPs, because one SERP costs $0.002 and $1 divided by $0.002 is 500. The trial pays for real calls, so its responses carry real data.
The Sandbox is free and charges nothing. It returns dummy data in the same field structure as production, so use it to wire your code, not to judge data quality.
| Test | What it proves | Cost |
|---|---|---|
| Sandbox | Request shape and response fields, with dummy data | Free |
| Trial credit | Real paid responses, around 500 live Google SERPs | $1 of trial credit |
| Playground | Requests from the dashboard, or through MCP and the n8n, Postman and Google Sheets templates | Uses the trial credit |
- To use the Sandbox, change api.dataforseo.com to sandbox.dataforseo.com. The paths stay the same.
- The Sandbox has the production rate limits: 10,000 calls a minute, and up to 100 tasks per POST. Live calls carry one task each.
- Do not open several trial accounts. DataForSEO treats that as unusual activity and can pause the account (error 40201).
- The trial is $1. The $50 figure is the minimum top-up, and it is real money.
How billing works
Deposits, balance and refunds
Pay as you go, with no subscription and no monthly fee.
You add a balance with a $50 minimum top-up. Each request draws from that balance. The balance never expires, and the top-up is not a subscription fee.
- Set daily spending limits for the whole account, or for one API or endpoint. Auto top-up is optional.
- Pay by card, PayPal or Amazon Pay. Bank wire and ACH are available for payments of $5,000 or more.
- DataForSEO refunds first-time purchases of API credits within 30 days, with no questions asked. Database purchases are excluded.
- Identical tasks count as a user-side error, and DataForSEO does not refund them.
- The price depends on the API, the endpoint, the mode and the request parameters.
- Units vary by endpoint: tasks, results, rows or pages.
- Queued tasks are billed when they are set. Fetching a finished result is free.
- For high volume or several APIs, ask sales for a custom estimate.
- Some countries and territories are barred, including Russia, Iran and North Korea. Read the terms of service before you sign up.
Standard vs Priority vs Live: queue prices and turnaround
Faster costs more. You choose the mode for each task.
These are DataForSEO list prices in October 2026. For the Google Organic SERP API, the DataForSEO pricing pages list three modes:
| Mode | Price per SERP | Turnaround | How you call it |
|---|---|---|---|
| Standard queue | $0.0006 | About 5 minutes on average, with a 45-minute target | POST a task, then GET the result |
| Priority queue | $0.0012 | Up to 1 minute on average | POST a task, then GET the result |
| Live | $0.002 | Up to 6 seconds on average | One POST, and the result comes back in the response |
Priority costs 60% of the Live price. Live costs 3.33 times Standard at the same depth ($0.002 divided by $0.0006). Location, language and device do not change the price, and you can mix modes across tasks.
- Use Standard for scheduled work. A weekly rank check can wait for the queue.
- Use Live only when a person waits on the result, such as an on-screen check.
- Priority is set per task with the priority field. The price is in the table above.
- Google Ads keyword data has Standard, at $0.06 per task in 1 to 3 hours, and Live, at $0.09 per task in about 7 seconds. It has no Priority option.
- Labs and Backlinks run on Live only. On-Page Site Crawl is a crawl job, while Instant Pages and Content Parsing are single Live calls.
- The help center says it plainly: the faster you want the results, the higher the price.
Cost per task by API
Official unit prices by API
One row per billing unit. Prices are in USD.
Read each row as the price for one billing unit. Some APIs add a second charge per item, keyword, domain or row. Labs uses one rate for most endpoints, and its exceptions have their own rows.
| API and mode | Billing unit | List price |
|---|---|---|
| SERP, Standard | Per SERP of up to 10 organic results | $0.0006 |
| SERP, Priority | Per SERP | $0.0012 |
| SERP, Live | Per SERP | $0.002 |
| Google Ads keyword data, Standard | Per task, up to 1,000 keywords | $0.06 |
| Google Ads keyword data, Live | Per task, up to 1,000 keywords | $0.09 |
| Labs, most endpoints | Per task plus per item | $0.012 + $0.00012 per item |
| Labs search intent | Per task plus per keyword | $0.012 + $0.00012 per keyword |
| Labs Historical SERPs | Per SERP | $0.00012 |
| Labs Historical Rank Overview | Per task plus per item, where one item is one month | $0.12 + $0.0012 per item |
| Labs Historical Bulk Traffic Estimation and Domain Metrics by Categories | Per task plus per domain | $0.12 + $0.0012 per domain |
| Backlinks, all endpoints (Live only) | Per task plus per row, where one row is one backlink, referring domain or page | $0.024 + $0.000036 per row |
| On-Page Site Crawl | Per crawled page | $0.00015 |
| On-Page Instant Pages or Content Parsing | Per task | $0.00015 |
| On-Page Page Screenshot | Per screenshot | $0.0048 |
What multiplies the SERP bill
The settings that change a SERP bill, with the official example for each.
| Setting | Effect on the SERP price | Official example |
|---|---|---|
| Depth | One base price for each 10-result page, rounded up to the next ten | Depth 15 bills as 20 results, which is two SERPs |
| Search operator in the keyword, such as site:, inurl: or intitle: | Multiplies the base price by 5 | Priority, pixel rankings, depth 15, one operator: 2 x $0.0012 x 5 + $0.0012 = $0.0132 |
| Pixel rankings or async AI Overview | Adds one more base price | Priority, pixel rankings, depth 15: 2 x $0.0012 + $0.0012 = $0.0036 |
| People Also Ask click depth | Adds $0.00015 per click | Each click adds $0.00015 |
| Keyword, location, language, device, search domain or result type | No change to the price | Desktop and mobile are two tasks at the same unit price |
- If Google returns fewer results than the depth, DataForSEO refunds the difference.
- Labs clickstream data doubles the request cost on the endpoints that support it.
On-Page parameters add a fixed amount per page on top of the $0.00015 base. The parameters stack, but browser rendering already includes the other two, so do not add their fees again.
| On-Page parameter | Added per page | Total per page |
|---|---|---|
| load_resources | $0.0003 | $0.00045 |
| enable_javascript | $0.00135 | $0.0015 |
| enable_browser_rendering (includes load_resources and enable_javascript) | $0.00495 | $0.0051 |
| enable_content_parsing | $0.00015 | $0.0003 |
| calculate_keyword_density | $0.00015 | $0.0003 |
Rate limits and request limits
Limits control how fast a big job can run, and what happens when it runs too fast.
| Limit | Value | What to do |
|---|---|---|
| General rate limit | 10,000 requests per minute | Ask support for a higher limit for a large project |
| Live Google Ads endpoints | 12 requests per minute | Use the Standard method, task_post and task_get, for volume |
| Standard method | Up to 10,000 calls per minute, and up to 100 tasks per POST | Batch your tasks, up to 100 per POST |
| Live Google Trends | 250 Live tasks per minute across all users | Use the Standard method |
| Tasks Ready endpoints | 20 requests per minute | Use callbacks instead of polling |
| User Data endpoint | 6 requests per minute | Call it rarely |
| Simultaneous requests for Labs, Backlinks, On-Page, Content Analysis, Trends and AI Optimization | 30 at a time, per API | At 1 second per request, 30 threads give at most 1,800 requests a minute |
| Live Labs, Backlinks and Content Analysis calls | One task per call | Send one task in each call |
The full list of limits is on DataForSEO's rate limit page. More than 100 tasks in one POST returns error 40006 for the extra tasks, so split larger lists. Too many simultaneous queries return error 40209, and the per-minute limit returns error 40202.
On-Page Instant Pages, Content Parsing (Live) and Page Screenshot take up to 20 tasks per request.
Items per task: the caps that shape a batch
The largest batch one task accepts.
| Endpoint | Largest batch per task |
|---|---|
| Google Ads search volume | 1,000 keywords, 80 characters each, 10 words per phrase |
| Labs keyword overview | 700 keywords |
| Labs bulk keyword difficulty | 1,000 keywords |
| Labs keyword ideas | 200 seed keywords, and up to 1,000 result keywords |
| Backlinks bulk endpoints | 1,000 targets, which can be domains, subdomains or pages |
| SERP depth | 700 results, and up to 100 crawled pages |
The price of Google Ads search volume is the same for 1 keyword or 1,000 keywords, so fill every task to its limit.
Worked cost examples
How to read the examples
Every sum uses the list prices in the tables above.
- One keyword, one location and one device make one task. Desktop and mobile are two tasks.
- A Labs item is one returned keyword or domain. DataForSEO does not charge for keywords it leaves out of the results.
- A Backlinks summary or bulk call returns one row per target.
Job 1: rank tracking for 100 keywords, weekly
Inputs: 100 keywords, Google Organic, one location, one device, top 10, 52 runs a year.
Each keyword at depth 10 is one SERP. One weekly run is 100 tasks, and a single POST carries up to 100 tasks.
| Setup | Math per run | Per run | Per year |
|---|---|---|---|
| Standard, top 10 | 100 x $0.0006 | $0.06 | 52 x $0.06 = $3.12 (about $0.26 a month) |
| Priority, top 10 | 100 x $0.0012 | $0.12 | 52 x $0.12 = $6.24 |
| Live, top 10 | 100 x $0.002 | $0.20 | 52 x $0.20 = $10.40, sent as 100 single calls |
| Standard, top 30 (3 SERPs) | 100 x 3 x $0.0006 | $0.18 | 52 x $0.18 = $9.36 |
| Standard, top 100 (10 SERPs) | 100 x 10 x $0.0006 | $0.60 | 52 x $0.60 = $31.20 |
| Standard, desktop and mobile, top 10 | 2 x 100 x $0.0006 | $0.12 | 52 x $0.12 = $6.24 |
| Standard, AI Overview loaded, top 10 | 100 x $0.0012, one more base price per SERP | $0.12 | 52 x $0.12 = $6.24 |
| Standard, daily instead of weekly, top 10 | 100 x $0.0006 | $0.06 | $0.06 x 365 = $21.90 |
Depth is the biggest lever. Top 100 costs ten times top 10 for the same keywords, so track deep only where page 2 or 3 movement changes a decision.
A keyword with one search operator costs 5 x $0.0006 = $0.003 per SERP, five times the plain price. A $50 deposit would fund this weekly job for about 16 years.
Job 2: keyword research for 1,000 keywords
Inputs: 1,000 keywords for volume, difficulty, intent and top 10 SERPs, plus 1,000 ideas from seed keywords.
| Step | Tasks | Math | Cost |
|---|---|---|---|
| Keyword ideas from seeds (Labs, 1,000 results) | 1 | $0.012 + 1,000 x $0.00012 | $0.132 |
| Search volume (Google Ads, Standard) | 1 (up to 1,000 keywords) | Flat price per task | $0.06 |
| Bulk keyword difficulty (Labs) | 1 (up to 1,000 keywords) | $0.012 + 1,000 x $0.00012 | $0.132 |
| Search intent (Labs) | 1 | $0.012 + 1,000 x $0.00012 | $0.132 |
| Top 10 SERPs (Standard) | 1,000 (10 POSTs of 100) | 1,000 x $0.0006 | $0.60 |
| Total | $0.132 + $0.06 + $0.132 + $0.132 + $0.60 | $1.056 |
That is $1.056 for 1,000 keywords, about $0.001 per keyword. The SERP pulls are 57% of the total ($0.60 divided by $1.056).
Keyword overview takes 700 keywords per task, so 1,000 keywords need two tasks: 2 x $0.012 + 1,000 x $0.00012 = $0.144. Clickstream data doubles that call to $0.288.
Live Google Ads search volume is capped at 12 requests per minute. At 1,000 keywords a request, that is 12,000 keywords a minute. A bigger job belongs on Standard, which returns in 1 to 3 hours.
Labs data refreshes every 30 to 90 days for most endpoints, so a daily run mostly repeats the same data.
Job 3: backlink check for 50 domains
Headline metrics for 50 domains, assuming one billed row per domain, and the endpoint choice that changes the bill most.
| Method | Tasks | Rows | Math | Cost |
|---|---|---|---|---|
| One bulk call (Bulk Backlinks or another bulk endpoint) | 1 | 50 | $0.024 + 50 x $0.000036 | $0.0258 |
| All four bulk endpoints (Bulk Ranks, Bulk Backlinks, Bulk Spam Score, Bulk Referring Domains) | 4 | 200 | 4 x $0.0258 | $0.1032 |
| One Summary call per domain | 50 | 50 | 50 x ($0.024 + 1 x $0.000036) | $1.2018 |
| Full backlink list, 1,000 rows per domain | 50 | 50,000 | 50 x ($0.024 + 1,000 x $0.000036) | $3.00 |
The bulk call costs $0.0258, about $0.03. Fifty Summary calls cost $1.2018, about $1.20, which is 46.6 times the bulk call ($1.2018 divided by $0.0258).
Bulk endpoints take up to 1,000 targets per request. A domain target returns the root domain with all of its subdomains. Fifty Summary calls also need at least two waves under the 30-simultaneous limit, while one bulk call needs one slot.
Bonus job: crawl 1,000 pages
On-Page cost depends on the parameters you switch on.
| Crawl setting | Per page | 1,000 pages |
|---|---|---|
| Basic site crawl | $0.00015 | 1,000 x $0.00015 = $0.15 |
| With enable_javascript | $0.0015 | 1,000 x $0.0015 = $1.50 |
| With enable_browser_rendering | $0.0051 | 1,000 x $0.0051 = $5.10 |
Browser rendering is the expensive setting. The official example prices 10,000 pages at $1.50 on the base rate and $51 with browser rendering.
Set max_crawl_pages to cap the spend. Its value times the per-page rate is the most a task can cost, so 1,000 pages at the browser-rendering rate cannot exceed $5.10.
In our own OpenSEO setup, a 1,000-page site audit on the basic crawl costs $0.15 (1,000 x $0.00015).
Control the bill and fix errors
Daily limits, duplicate tasks and tags
Set these before your first large run.
- Set a daily cost limit for the account, or for one API or endpoint. Going over returns error 40203. Change the limit in the API settings to continue.
- Duplicate-task limits apply per hour and per day. Errors 40205 and 40206 mean you hit one of them.
- Identical tasks count as a user-side error, so de-duplicate before you post.
- Use the tag field to label each task with a client or project. The response returns the tag, so you can match results to clients.
- The response documentation lists total tasks cost in USD. Log that number on every run.
- You pay when a queued task is set. If you stop polling for the result, the task is still billed.
Common errors and the fix for each
Error codes come from the DataForSEO error appendix.
| Code | What it means | Fix |
|---|---|---|
| 40100 | Authorization failed. The credentials do not match the account. | Copy the login and API password again from the API Access tab |
| 40104 | New account still needs email or phone confirmation | Confirm your email or phone in the user panel |
| 40207 | IP address not on the whitelist | Add your IP address in the user panel |
| 40201 | Unusual activity, which can come from several trial accounts | Use one account |
| 40202 | Per-minute rate limit exceeded | Slow the request rate |
| 40209 | Too many simultaneous queries | Keep to 30 at a time per API |
| 40006 | More than 100 tasks in one POST | Split the list into POSTs of 100 or fewer |
| 40203 | Daily cost limit exceeded | Change the cost limit in the API settings |
| 40205 and 40206 | Duplicate-task limit per hour or per day reached | De-duplicate tasks before you post |
| 40210 | Balance too low | Top up the balance |
| 40106 | Partial results | Pages that were not returned are not charged |
Read the status code first. Codes from 20000 to 29999 mean success.
Keep the results you pay for
DataForSEO stores results for a limited time.
| Method or format | How long DataForSEO stores it |
|---|---|
| Standard method results | 30 days |
| SERP results in JSON, Standard or Live | 30 days |
| Live method results, other than SERP JSON | Not stored |
| HTML results | 7 days |
A Standard task ID can fetch the result again for 30 days. Live responses other than SERP JSON are not kept, so save those yourself.
Common Questions
How much does tracking deeper than the top 10 add to a DataForSEO rank tracking bill?
Depth is billed in 10-result pages, rounded up, and each page after the first adds one base price. On Standard, a top 10 check is $0.0006 per keyword, top 30 is $0.0018, and top 100 is $0.006. For 100 keywords tracked weekly, that is $3.12 a year at top 10 and $31.20 a year at top 100. Track deep only where page 2 or 3 movement changes a decision.
When does Priority or Live pay off on rank checks?
Standard costs $0.0006 per SERP and returns in about 5 minutes on average, with a 45-minute target. Priority costs $0.0012 and returns in up to a minute on average. Live costs $0.002, which is 3.33 times Standard at the same depth, and returns in up to 6 seconds. A weekly job can wait for the queue, so pay for Live only where a person waits on the result. Priority fits jobs that must finish soon but that nobody watches live.
Why does a backlink check for 50 domains cost $0.03 in one call and $1.20 in 50 calls?
Backlinks bills $0.024 per task plus $0.000036 per row, and a bulk endpoint takes up to 1,000 targets in one task. One bulk call for 50 domains costs 0.024 + 50 x 0.000036 = $0.0258. Fifty Summary calls pay the task fee fifty times: 50 x $0.024036 = $1.2018. The gap widens as the list grows, so batch every domain you can into bulk requests.
How do I cover 1,000 keywords within the 12 requests per minute Live Google Ads cap?
One request carries up to 1,000 keywords and costs the same as a request with one keyword. At 12 requests a minute, Live covers 12,000 keywords a minute. A bigger list belongs on the Standard method: task_post and task_get, with up to 100 tasks per POST and 10,000 calls a minute. Standard returns in 1 to 3 hours at $0.06 per task, which suits overnight refreshes.
How do I size the first $50 top-up against a daily cost limit?
Start from your largest single job, not the monthly average. A weekly top-10 check of 100 keywords costs $3.12 a year and a bulk Backlinks call for 50 domains costs $0.0258, so $50 covers both for years. Set the daily cost limit near the cost of one full run, so a looping script stops after one extra run. The balance never expires, and refunds apply only to first-time purchases within 30 days.
Which settings quietly multiply a SERP bill?
A search operator in the keyword multiplies the base price by 5, as the official example shows. Pixel rankings and async AI Overview each add one more base price. Depth adds a base price for each 10-result page. People Also Ask click depth adds $0.00015 per click. Location, language, device and result type change nothing. Work through the official example: a Priority task with pixel rankings at depth 15 costs 2 x $0.0012 + $0.0012 = $0.0036, and $0.0132 with one operator.
Sources
- [1] DataForSEO pricing
- [2] Google Organic SERP API pricing
- [3] Google Ads keyword data pricing
- [4] DataForSEO Labs pricing
- [5] Backlinks API pricing
- [6] On-Page API pricing
- [7] Rate limits and request limits
- [8] Terms of service
- [9] API authentication
- [10] API error codes
- [11] Sandbox
- [12] SERP task_post reference
- [13] Google Ads search volume reference
- [14] Labs keyword overview reference
- [15] Backlinks bulk reference
- [16] SERP API cost explained
- [17] API key setup and Base64 help
- [18] OpenSEO on the DataForSEO API (GrowthVector guide)