Running into errors is a normal part of working with any API, especially during the first integration. Most early errors with the DataForSEO API stem from predictable sources and causes, such as authentication issues, method selection, missing parameters, and usage limits.
In this guide, we’ll cover the most common errors and suggest the best ways to deal with them.
Important context: how to read DataForSEO status codes
Our API servers return HTTP code 200 for almost every request, except for 401 (Unauthorized), 402 (Payment Required), 404 (Not Found), and 500 (Internal Server Error). So a 200 response doesn’t guarantee that you received data.
The actual outcome is described in the status_code and status_message fields, which appear at two levels of the API response:
- Request-level codes (at the top of the response) indicate whether our system accepted and processed your API call.
- Task-level codes (within the
tasksarray) show the result of each task.
Here is an example of a response from the SERP API that was successfully processed but had a task-level error:
{
"version": "0.1.20260717",
"status_code": 20000,
"status_message": "Ok.",
"time": "22.3177 sec.",
"cost": 0.002,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "07231252-7652-0139-0000-301b3ccdda6f",
"status_code": 40101,
"status_message": "Internal SE Server Error.",
"time": "22.2466 sec.",
"cost": 0.002,
"result_count": 0,
"path": [
"v3",
"serp",
"google",
"organic",
"live",
"advanced"
],
"data": {
"api": "serp",
"function": "live",
"se": "google",
"se_type": "organic",
"keyword": "affordable car insurance policy",
"device": "mobile",
"os": "ios",
"location_code": "2840",
"language_code": "en",
"load_async_ai_overview": true
},
"result": null
}
]
}
You can get a 20000 (Ok.) status code and message at the top level and an error inside a task, so always check both. Status codes starting with 2 mean success, 4 point to an issue with the request or account, and 5 indicate a problem on the API side or with a third-party source. You can find the full list of status codes and messages on the Errors page of our documentation.
Authentication errors
If you sent an API request and got a 401 HTTP code or a 40100 status_code, it means our system couldn’t match your credentials. In most cases, the cause is one of the following:
- Wrong API password. The DataForSEO API uses an API password, which is generated automatically at registration and is different from the one you use to log in to the dashboard. You can find it in the API Access tab of the dashboard. The API password is visible for 24 hours after registration, and then it can be sent by email.
- Wrong login. Your API login is the email address you used for registration.
- Credential encoding error. We use Basic authentication, so the
Authorizationheader should containBasic, a space, and the base64-encodedlogin:passwordstring. An extra space or line break in the encoded string makes the request fail.
However, a few other account-level errors can block your first requests:
- 40104: Your account isn’t verified yet. Complete the verification in the dashboard.
- 40207: Your IP address isn’t whitelisted. Add it in the API Access section (learn more in this Help Center article).
- 40200 or 40210: Your balance is too low to complete the request. Top up your account in the dashboard.
For a full authentication walkthrough with code examples, see this guide.
Data retrieval method issues: Standard vs Live
Many of the DataForSEO APIs support two data retrieval methods:
- Live: You send a request and receive the results in the same response. Best choice for systems that require instant results.
- Standard: You set a task with the
task_postendpoint and collect the results later withtask_get. Use it if you don’t need instant results and want to process batch requests.
Not every API supports both methods. For example, the DataForSEO Labs API and Backlinks API work in Live mode only.
One of the common first errors is sending a request to a task_post endpoint and expecting data in the response. Instead, you get the 20100 (Task Created) status code and a task_id. This means the task has been accepted, and you need to make a separate task_get request to collect the results.
Calling task_get too early is another common issue. If the task isn’t processed yet, you’ll receive status codes 40601 (Task Handed) or 40602 (Task In Queue). These indicate that you should wait and request the results again. Additionally, if you get a 40401 (Task Not Found) error, check that the task ID, endpoint path, and hostname are correct.
Specific endpoints, such as Google Organic SERP API Task POST, support the paid priority parameter. High priority puts your task in a priority queue, so you get results faster, but you still need task_get to collect them.
If you need to retrieve results immediately, switch to the Live endpoint of the API you use (if available). Note that most Live endpoints accept only one task per request. Sending multiple tasks at once returns a 40000 error code (You can set only one task at a time).
For more details, read the dedicated article on Standard and Live modes.
Request body errors and missing required parameters
Each endpoint has its own set of required parameters, so a request that works for one endpoint may be invalid on another. Before sending a request, check the required fields on the endpoint’s page in our docs.
When a required parameter is missing or has an invalid value, you get the 40501 error code with the field name in the message, for example: Invalid Field: 'location_name'. Besides, across DataForSEO APIs and endpoints, required parameters may have different rules and value limitations. The most notable examples are the keyword and keywords fields. For example, in the Organic SERP API, a keyword can be up to 700 characters long and include search parameters that enable more granular search, but they multiply the cost of a request by 5. At the same time, in specific Business Data API endpoints, you can use the keyword field to pass cid and place_id values.
There are also a few possible request body errors that may occur:
- 40503 (POST Data Is Invalid): The request structure is invalid. Often, the body is sent as a single object instead of an array of task objects.
- 40506 (Unknown Fields in POST Data): The body contains a field that the endpoint doesn’t support, usually due to a typo.
- 40006: A single POST request contains more than 100 tasks.
To check a request before adding it to your code, you can run it in the DataForSEO API Playground or test for free with the Sandbox feature.
Location and language errors
Location and language parameters are probably the most frequent cause of request body errors. Most endpoints require one location parameter (location_name or location_code, some endpoints also accept location_coordinate) and one language parameter (language_name or language_code).
The errors usually happen due to these reasons:
- The parameter is missing. The task returns
Invalid Field: 'location_name'. - The value has the wrong format. For example,
London, UKreturns the same error, while the accepted value isLondon,England,United Kingdom. Usinglocation_codeinstead of a name can help to avoid such mistakes. - The location isn’t supported by the specific API. Each API has its own list of available locations, so a location that works in the Google SERP API may not be available in the DataForSEO Labs API.
To get valid values, use the locations and languages endpoints of the API you’re working with. For example, all supported locations and languages for the DataForSEO Labs API are available through the Location and Languages endpoint.
Rate and concurrency limits
If your integration sends many requests at once, you may reach one of our limits:
- 40202 (The rate limit per minute has been exceeded): The general limit is 10,000 requests per minute.
- 40209 (Too many simultaneous queries): You can send up to 30 simultaneous requests to specific APIs, such as the DataForSEO Labs API, Backlinks API, Content Analysis API, AI Optimization API, DataForSEO Trends API, and OnPage API.
Some endpoints have lower limits. For example, Live Google Ads endpoints accept 12 requests per minute, so for larger volumes, use the Standard method. You can learn more about rate limits in this Help Center article.
Wrap-up: “Making an error-free API call” checklist
As you can see, most of the initial API errors are easy to resolve and avoid. Here’s a short checklist you can follow for making an error-free API request:
- Read our documentation and Help Center posts for the specific endpoints and APIs you want to use.
- Ensure that your DataForSEO API credentials are available and correct.
- Ensure that your account balance has sufficient funds to use our APIs.
- Check if the data retrieval method you chose meets your system requirements.
- Make sure the request body(ies) are valid and contain all required fields with correct values.
- Check whether your system meets our APIs’ rate and concurrency limits.
- Test your integration using the free Sandbox feature before working with real data.
If something in your integration is still off or you need additional clarification, don’t hesitate to contact our 24/7 support team.