Getting started
Creating an API Key
1. Sign in to your SE Ranking account.
2. Navigate to Profile & Preferences → API Dashboard.
3. Click the Create API Key button and then copy the generated key value.
4. Copy the generated key value. Treat this key like a password and keep it secure.
Note: You can issue a single key per account.
Authentication
All requests to the Data API must be authenticated. The base URL for all endpoints is:
https://api.seranking.com
You have two primary methods to authenticate your API requests.
Method 1: Authorization Header (Recommended)
Include an Authorization
header in your request, with the value Token YOUR_API_KEY
.
You can test your key by fetching your subscription details. A 200 OK
response confirms that your key is working correctly.
curl -X GET 'https://api.seranking.com/v1/account/subscription' \
-H 'Authorization: Token YOUR_API_KEY'
Method 2: Query Parameter
Alternatively, you can pass the key as a URL query parameter named apikey
.
curl -X GET 'https://api.seranking.com/v1/account/subscription?apikey=YOUR_API_KEY'
Making a request
Once you have successfully authenticated, you can make requests to any API endpoint. Requests follow the same structure as the authentication examples above.
- GET requests can include parameters in the URL’s query string.
- POST requests send data in a JSON body and must include the
Content-Type: application/json
header.
Example POST Request
Here is an example of a more complex POST request to the /backlinks/summary
endpoint. Notice how the authentication header remains the same.
curl -X POST 'https://api.seranking.com/v1/backlinks/summary' \
-H 'Authorization: Token YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"target": "seranking.com",
"mode": "host"
}'
Postman Collection
We offer a Postman collection to help you get started without writing any code. Postman is a free application that makes it easy to explore and test APIs.
Prerequisites
Getting Started
To get started fork the collection from SE Ranking’s public workspace within Postman.

Enter a name for your fork and select the workspace where it will be created:

You can also fork the environment template from the SE Ranking Developers Workspace:

Set your API key
To run requests you’ll need to supply your secret API key and set it as an environment variable within your workspace.
To set any environment variable, create a new environment within Postman:

Add your secret key as a variable to the environment and save:

Set the environment to active:

Now within the collection set it to use the environment you just created:

If your environment is set up correctly, you should see your secret key value if you mouse over the secret_key_data variable in the Token field:

Be sure to save the collection after you’ve set the key:

Make a test call
You should be ready now to make a test call. An easy first call is to create a customer:

Since this is a test, no parameters updates are required. You can hit the Send button to run this request:

If your environment is set up you’ll get a summary object back as the response to the call:

Add parameters to the call by clicking the Params tab, where you’ll see a list of available parameters. Select and populate the ones you want to use. Here’s an example of updating a target parameter:

You’ll see the updated target in the response:

Glossary
Term | Definition |
---|---|
Backlink (Link) | A reference to the target URL in the form of a link, redirect, redirect chain, or canonical link that comes from a different domain than the target. |
Domain | A network domain is an administrative grouping of multiple private computer networks or hosts within the same infrastructure under one domain name, e.g. domain.com. Optionally, a domain may have subdomains. |
Subdomain | A subdomain is a domain that is a part of another domain, e.g.:sub.domain.com is a subdomain of domain.comexample.sub.domain.com is a subdomain of sub.domain.comexample.sub.domain.com is a subdomain of domain.com |
Host | A host is a domain name that is completely specified with all labels in the hierarchy of the DNS, having no parts omitted, e.g.:in the URL https://www.example.sub.domain.com/path, the host name will be www.example.sub.domain.com |
Page (URL) | A reference to a web resource that specifies its location on a computer network and a mechanism for retrieving it. |
Referring Page (URL) | A page which sends users to your website via links or redirects. |
Destination Page (URL) | A page a link or a redirect points to. |
Referring domain | A host name of the Referring Page (URL). |
Target | An entity for which you are retrieving backlinks. Can be determined at an exact URL, domain, or subdomain. |
Anchor Text | Anchor text is the clickable text in a hyperlink. |
Nofollow | Nofollow is a value that can be assigned to the rel attribute in the <a> tag or robots meta tag. It is one of Google’s recommended methods for flagging spam, advertising-related or sponsored links. More details here.Nofollow links do not normally pass SEO weight (or pass less SEO weight) to the destination URL, and hence are unlikely to have an effect on its rankings. |
InLink Rank | InLink Rank is the indicator of a page’s authority. It is based on the same algorithm as the original Google PageRank and is determined by the number and weight of incoming links to a page. InLink Rank is scored using a 0 to 100 logarithmic scale. The higher the number, the higher the page’s authority. |
Domain InLink Rank | Domain InLink Rank is the indicator of a domain’s authority. Like InLink Rank, Domain InLink Rank can be used to assess domains that links come from. |
Regional Database Codes
Use one of the following codes as the value of the source parameter when you want a request to target a specific regional keyword database.
The list mirrors the ISO 3166-1 alpha-2 country codes except for the special alias worldwide (an aggregated global dataset).
Code | Country / Region |
---|---|
ae | United Arab Emirates |
af | Afghanistan |
ag | Antigua and Barbuda |
ai | Anguilla |
al | Albania |
am | Armenia |
ao | Angola |
ar | Argentina |
as | American Samoa |
at | Austria |
au | Australia |
aw | Aruba |
az | Azerbaijan |
ba | Bosnia and Herzegovina |
bb | Barbados |
bd | Bangladesh |
be | Belgium |
bf | Burkina Faso |
bg | Bulgaria |
bh | Bahrain |
bi | Burundi |
bj | Benin |
bn | Brunei |
bo | Bolivia |
br | Brazil |
bs | Bahamas |
bt | Bhutan |
bw | Botswana |
by | Belarus |
bz | Belize |
ca | Canada |
cd | Congo (Democratic Republic) |
cf | Central African Republic |
cg | Congo (Republic) |
ch | Switzerland |
ci | Côte d’Ivoire |
ck | Cook Islands |
cl | Chile |
cm | Cameroon |
cn | China |
co | Colombia |
cr | Costa Rica |
cu | Cuba |
cv | Cabo Verde |
cy | Cyprus |
cz | Czechia |
de | Germany |
dj | Djibouti |
dk | Denmark |
dm | Dominica |
do | Dominican Republic |
dz | Algeria |
ec | Ecuador |
ee | Estonia |
eg | Egypt |
es | Spain |
et | Ethiopia |
fi | Finland |
fj | Fiji |
fm | Micronesia |
fo | Faroe Islands |
fr | France |
ga | Gabon |
gb | United Kingdom |
gd | Grenada |
ge | Georgia |
gf | French Guiana |
gg | Guernsey |
gh | Ghana |
gi | Gibraltar |
gl | Greenland |
gm | Gambia |
gn | Guinea |
gp | Guadeloupe |
gq | Equatorial Guinea |
gr | Greece |
gt | Guatemala |
gu | Guam |
gy | Guyana |
hk | Hong Kong |
hn | Honduras |
hr | Croatia |
ht | Haiti |
hu | Hungary |
id | Indonesia |
ie | Ireland |
il | Israel |
im | Isle of Man |
in | India |
iq | Iraq |
is | Iceland |
it | Italy |
je | Jersey |
jm | Jamaica |
jo | Jordan |
jp | Japan |
ke | Kenya |
kg | Kyrgyzstan |
kh | Cambodia |
ki | Kiribati |
kn | Saint Kitts and Nevis |
kr | South Korea |
kw | Kuwait |
ky | Cayman Islands |
kz | Kazakhstan |
la | Laos |
lb | Lebanon |
lc | Saint Lucia |
li | Liechtenstein |
lk | Sri Lanka |
ls | Lesotho |
lt | Lithuania |
lu | Luxembourg |
lv | Latvia |
ly | Libya |
ma | Morocco |
mc | Monaco |
md | Moldova |
me | Montenegro |
mg | Madagascar |
mk | North Macedonia |
ml | Mali |
mm | Myanmar |
mn | Mongolia |
mq | Martinique |
mr | Mauritania |
ms | Montserrat |
mt | Malta |
mu | Mauritius |
mv | Maldives |
mw | Malawi |
mx | Mexico |
my | Malaysia |
mz | Mozambique |
na | Namibia |
nc | New Caledonia |
ne | Niger |
ng | Nigeria |
ni | Nicaragua |
nl | Netherlands |
no | Norway |
np | Nepal |
nr | Nauru |
nu | Niue |
nz | New Zealand |
om | Oman |
pa | Panama |
pe | Peru |
pf | French Polynesia |
pg | Papua New Guinea |
ph | Philippines |
pk | Pakistan |
pl | Poland |
pn | Pitcairn Islands |
pr | Puerto Rico |
ps | State of Palestine |
pt | Portugal |
py | Paraguay |
qa | Qatar |
re | Réunion |
ro | Romania |
rs | Serbia |
ru | Russia |
rw | Rwanda |
sa | Saudi Arabia |
sb | Solomon Islands |
sc | Seychelles |
se | Sweden |
sg | Singapore |
sh | Saint Helena |
si | Slovenia |
sk | Slovakia |
sl | Sierra Leone |
sm | San Marino |
sn | Senegal |
so | Somalia |
sr | Suriname |
st | São Tomé and Príncipe |
sv | El Salvador |
td | Chad |
tg | Togo |
th | Thailand |
tj | Tajikistan |
tk | Tokelau |
tl | Timor-Leste |
tm | Turkmenistan |
tn | Tunisia |
to | Tonga |
tr | Türkiye |
tt | Trinidad and Tobago |
tw | Taiwan |
tz | Tanzania |
ua | Ukraine |
ug | Uganda |
us | United States |
uy | Uruguay |
uz | Uzbekistan |
vc | Saint Vincent and the Grenadines |
ve | Venezuela |
vg | British Virgin Islands |
vi | U.S. Virgin Islands |
vn | Vietnam |
vu | Vanuatu |
ws | Samoa |
ye | Yemen |
yt | Mayotte |
za | South Africa |
zm | Zambia |
zw | Zimbabwe |
ww | Worldwide (aggregate) |
Note: If a code you send is not supported, the API returns 400 Invalid source.
Rate Limits
Request-rate limit
Limit scope | Value | What it means in practice |
---|---|---|
Maximum calls per API key | 10 requests per second | The limit is evaluated in a rolling one-second window across all endpoints. Keep cumulative traffic from every thread, worker or server below this threshold |
- If the threshold is exceeded the API responds with HTTP 429 “Too Many Requests” and the body explains that the call-rate limit has been reached .
- The window is rolling, so waiting 100–200 ms before retrying is usually enough. We recommend an exponential back-off strategy with jitter to avoid synchronized retry storms.
- Asynchronous endpoints such as /backlinks/export only count the initial task-creation request against your rate; polling /export/status is subject to the same 10 rps ceiling.
Custom Rate Limits
If your application requires a higher throughput, the standard rate limit can be customized. To discuss a plan that fits your specific needs, please contact our team.
Unit quota
Unit quotas govern how many requests you can make in total. Every successful request (2xx status code) consumes a certain number of API units from your subscription balance.
Monitoring Your Balance
A key part of maintaining a robust integration is actively monitoring your API unit balance. Refer to the complete specification for the endpoint to implement this check:
Unit Costs
The number of units consumed depends on the endpoint and the number of items processed. There are two primary cost models:
Cost per Record
For backlinks endpoints, you are charged for each object (e.g., backlinks, refdomain) in your request.
Service | Command | Units per Record in successful 2xx |
backlinks | export | 1000 |
backlinks | export/status | 0 |
backlinks | anchors | 1 |
backlinks | all | 1 |
backlinks | count | 100 |
backlinks | authority/domain | 1 |
backlinks | authority/domain/distribution | 1 |
backlinks | authority | 1 |
backlinks | referring-ips | 1 |
backlinks | referring-ips/count | 100 |
backlinks | metrics | 100 |
backlinks | history | 1 |
backlinks | history/count | 100 |
backlinks | history/cumulative | 100 |
backlinks | refdomains/history | 1 |
backlinks | refdomains/history/count | 100 |
backlinks | authority/page | 1 |
backlinks | authority/page/history | 1 |
backlinks | indexed-pages | 1 |
backlinks | raw | 1 |
backlinks | refdomains | 1 |
backlinks | refdomains/count | 100 |
backlinks | referring-subnets/count | 100 |
backlinks | summary | 100 |
gateway | subscription | 0 |
Cost per Request
For other endpoints, you are charged a flat rate for each successful API call.
Service | Command | Units per Request successful 2xx |
domain | overview | 100 |
domain | overview/all | 100 |
domain | overview/db | 100 |
domain | overview/history | 100 |
domain | keywords | 100 |
domain | ads | 100 |
domain | competitors | 100 |
domain | keywords/comparison | 100 |
keywords | export | 100 |
Forecasting costs before you run
- List the calls in your workflow.
- Multiply each call by its unit cost from the table.
- Sum the costs for all calls in the workflow.
- Compare the projected total with your units_left (obtained via the /v1/account/subscription endpoint ).
Example: You need backlink summaries for 250 domains and a full export for one of them.
- /backlinks/summary batched in groups of 100 → 3 calls × 10 units = 30 units
- /backlinks/export task creation → 1 call × 1000 units = 1000 units
- /backlinks/export/status polled twice → 2 calls × 1 unit = 2 units
Total forecast = 1032 units. Ensure at least that many remain or top-up first.
Insufficient Funds
Should your units_left balance reach zero, any subsequent API requests that ordinarily consume units will result in an HTTP 400 Insufficient funds error. Access to the API service will be temporarily suspended until your unit balance has been replenished.
Replenishing Units
Running out of credits should never stall your workflow. Two levers keep you moving:
- Switch to a higher plan – activates instantly, unused credits roll over to the higher cap.
- Enable plan-specific overage – pay only for what you exceed, billed at the end of the cycle. Overage is off by default; ask Support to flip the switch for your key.
Monthly credits | Plan overage ($ / 1 M) | Plan overage paid yearly ($ / 1 M) | Add-on overage ($ / 1 M) | Add-on overage paid yearly($ / 1 M) |
1M | $99.99 | $79.99 | $49.99 | $39.99 |
2M | $60.00 | $48.00 | $45.00 | $36.00 |
3M | $46.67 | $37.33 | $40.00 | $32.00 |
5M | $30.00 | $24.00 | $30.00 | $24.00 |
10M | $20.00 | $16.00 | $20.00 | $16.00 |
20M | $17.45 | $13.96 | $17.45 | $13.96 |
30M | $14.13 | $11.31 | $14.13 | $11.31 |
50M | $9.98 | $7.98 | $9.98 | $7.98 |
100M | $8.99 | $7.19 | $8.99 | $7.19 |
200M | $6.00 | $4.80 | $6.00 | $4.80 |
300M | $5.00 | $4.00 | $5.00 | $4.00 |
500M | $4.20 | $3.36 | $4.20 | $3.36 |
Enterprise | custom | custom | custom | custom |
*Pay-yearly prices already include a 20% discount vs paying monthly.
How to upgrade in one minute
- Ping Support via chat with your email and the plan you want overage on.
- They will enable it for the current and consecutive cycles.
Enabling overage
- Ping Support via chat with your email and the plan you want overage on.
- They will enable it for the current and consecutive cycles.
- When your balance hits zero, calls continue and extra credits accrue at the overage rate shown in the table. You can disable the feature at any time.
Error Handling
Error envelope
{
"error_description": "Unsupported 'output' format. Supported 'output' formats are 'json' (default) and 'xml'."
}
Canonical error codes
If a request to the API fails, the HTTP response will return an error, including the error code and a detailed description of the error in the response’s body.
Below are the details of common errors you may experience while working with the SE Ranking Backlinks API.
Code | Error Text | Solution |
200 (OK) | Returned value for a parameter is a negative digit | This situation is totally OK, and might happen if a special value must be returned – for example, InLink Rank = -1 must be treated as Unknown (unlike the situation where InLink Rank is known and equal to 0). |
200 (OK) | Returned value for a parameter is zero. | This situation is totally OK, and might happen if there’s no data for the target – for example, no referring backlinks or domains for an URL. |
244 (Results for huge websites like google.com or twitter.com are unavailable via API so far) | Results for huge websites like google.com or twitter.com are unavailable via API so far. | The command does not support your target so far due to the huge amount of data it requires to process. |
400 | Incorrect order field {sort} {sort_order} | |
400 | Exceeded keywords size. Max keywords for one request: 10000 | |
400 | Invalid keywords | |
400 | Invalid source | |
400 | Invalid domain | |
400 | Incorrect order | |
400 | Row limit exceeded | |
400 | No token | Incorrect APIKEY using, please review the APIKEY used in the authentication. |
400 (Bad Request) | Invalid target | Please ensure all values you have passed as a target are valid. A detailed list of all valid values for different parameters can be found in a specific command’s documentation. |
400 (Bad Request) | YYYY=XXXX is not within required bounds! | Please ensure all values you have passed as parameters are valid. Range of acceptable values can be found on a specific command’s documentation. |
400 (Bad Request) | Insufficient funds, API key is temporarily disabled. Please make a payment to enable you API key or contact us at [email protected]. | Please ensure you have sufficient balance. The request cannot be processed until you make a payment to re-enable your API key. |
400 (Bad Request) | Unsupported ‘XXXXX’ format. Supported ‘YYYYY’ formats are ‘AAAAA’ (default), ‘BBBBBB’, etc. | Unsupported format of the XXXXX parameter. Supported XXXXXX formats might be different for different commands, a detailed list of all valid values can be found on a specific command’s documentation. |
400 (Bad Request) | The requested resource could not be found. | Please ensure you are requesting a valid resource. |
400 (Bad Request) | Authentication failed. Please ensure you have a valid, enabled API key. To get an API key, please contact us at [email protected]. | The access is forbidden. Please contact us at [email protected] to find out the reason and re-enable your API key. |
400 (Bad Request) | Authentication failed. Please make sure your API key is valid and active. To get an API key, please contact us at [email protected]. | Please ensure you have a valid, active API key. |
400 (Bad Request) | Parameter YYY is invalid. | Please ensure all values you have passed as parameters are valid. A detailed list of all valid values for different parameters can be found on a specific command’s documentation. |
400 (Bad Request) | Unsupported ‘order_by’ format. Supported ‘order_by’ formats are ‘backlinks’ (default), ‘refdomains’. | Unsupported order_by format. Supported order_by formats might be different for different commands, a detailed list of all valid values can be found on a specific command’s documentation. |
400 (Bad Request) | Unsupported ‘mode’ format. Supported ‘mode’ formats are ‘host’ (default), ‘domain’, ‘url’. | The server cannot produce a response matching the desired mode format. Supported output formats are “domain”, “host” (default) or “url”. |
400 (Bad Request) | Parameter YYY is missing. | Please ensure you have passed all mandatory parameters. |
403 | License expired | License expired |
404 | Invalid source | |
405 (Method Not Allowed) | Method Not Allowed. | Please ensure you are using a method, which is supported at a resource. |
406 (Not Acceptable) | Unsupported ‘output’ format. Supported output formats are ‘json’ (default) and ‘xml’. | The server cannot produce a response matching the desired output format. Supported output formats are “json” (default) and “xml”. |
429 (Too Many Requests) | Call rate limit reached. | You are making too many requests per time period and exceeding the call rate limit for your API key. |
500 Internal Server Error | Unexpected error. Please try again later. | An unexpected error occurred (e.g.: a search engine parser is broken). |
503 Service unavailable | System is busy. Please try again later. | The system is busy and can’t handle the request at the moment. |