API Description

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:

Title of the code block
Copy
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.

Title of the code block
Copy
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.

Title of the code block
Copy
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.

Title of the code block
Copy
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

TermDefinition
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.
DomainA 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.
SubdomainA 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
HostA 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 domainA host name of the Referring Page (URL).
TargetAn entity for which you are retrieving backlinks. Can be determined at an exact URL, domain, or subdomain.
Anchor TextAnchor text is the clickable text in a hyperlink.
NofollowNofollow 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 RankInLink 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 RankDomain 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).

CodeCountry / Region
aeUnited Arab Emirates
afAfghanistan
agAntigua and Barbuda
aiAnguilla
alAlbania
amArmenia
aoAngola
arArgentina
asAmerican Samoa
atAustria
auAustralia
awAruba
azAzerbaijan
baBosnia and Herzegovina
bbBarbados
bdBangladesh
beBelgium
bfBurkina Faso
bgBulgaria
bhBahrain
biBurundi
bjBenin
bnBrunei
boBolivia
brBrazil
bsBahamas
btBhutan
bwBotswana
byBelarus
bzBelize
caCanada
cdCongo (Democratic Republic)
cfCentral African Republic
cgCongo (Republic)
chSwitzerland
ciCôte d’Ivoire
ckCook Islands
clChile
cmCameroon
cnChina
coColombia
crCosta Rica
cuCuba
cvCabo Verde
cyCyprus
czCzechia
deGermany
djDjibouti
dkDenmark
dmDominica
doDominican Republic
dzAlgeria
ecEcuador
eeEstonia
egEgypt
esSpain
etEthiopia
fiFinland
fjFiji
fmMicronesia
foFaroe Islands
frFrance
gaGabon
gbUnited Kingdom
gdGrenada
geGeorgia
gfFrench Guiana
ggGuernsey
ghGhana
giGibraltar
glGreenland
gmGambia
gnGuinea
gpGuadeloupe
gqEquatorial Guinea
grGreece
gtGuatemala
guGuam
gyGuyana
hkHong Kong
hnHonduras
hrCroatia
htHaiti
huHungary
idIndonesia
ieIreland
ilIsrael
imIsle of Man
inIndia
iqIraq
isIceland
itItaly
jeJersey
jmJamaica
joJordan
jpJapan
keKenya
kgKyrgyzstan
khCambodia
kiKiribati
knSaint Kitts and Nevis
krSouth Korea
kwKuwait
kyCayman Islands
kzKazakhstan
laLaos
lbLebanon
lcSaint Lucia
liLiechtenstein
lkSri Lanka
lsLesotho
ltLithuania
luLuxembourg
lvLatvia
lyLibya
maMorocco
mcMonaco
mdMoldova
meMontenegro
mgMadagascar
mkNorth Macedonia
mlMali
mmMyanmar
mnMongolia
mqMartinique
mrMauritania
msMontserrat
mtMalta
muMauritius
mvMaldives
mwMalawi
mxMexico
myMalaysia
mzMozambique
naNamibia
ncNew Caledonia
neNiger
ngNigeria
niNicaragua
nlNetherlands
noNorway
npNepal
nrNauru
nuNiue
nzNew Zealand
omOman
paPanama
pePeru
pfFrench Polynesia
pgPapua New Guinea
phPhilippines
pkPakistan
plPoland
pnPitcairn Islands
prPuerto Rico
psState of Palestine
ptPortugal
pyParaguay
qaQatar
reRéunion
roRomania
rsSerbia
ruRussia
rwRwanda
saSaudi Arabia
sbSolomon Islands
scSeychelles
seSweden
sgSingapore
shSaint Helena
siSlovenia
skSlovakia
slSierra Leone
smSan Marino
snSenegal
soSomalia
srSuriname
stSão Tomé and Príncipe
svEl Salvador
tdChad
tgTogo
thThailand
tjTajikistan
tkTokelau
tlTimor-Leste
tmTurkmenistan
tnTunisia
toTonga
trTürkiye
ttTrinidad and Tobago
twTaiwan
tzTanzania
uaUkraine
ugUganda
usUnited States
uyUruguay
uzUzbekistan
vcSaint Vincent and the Grenadines
veVenezuela
vgBritish Virgin Islands
viU.S. Virgin Islands
vnVietnam
vuVanuatu
wsSamoa
yeYemen
ytMayotte
zaSouth Africa
zmZambia
zwZimbabwe
wwWorldwide (aggregate)

Note: If a code you send is not supported, the API returns 400 Invalid source.

Rate Limits

Request-rate limit

Limit scopeValueWhat it means in practice
Maximum calls per API key10 requests per secondThe 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.

ServiceCommandUnits per Record in successful 2xx
backlinksexport1000
backlinksexport/status0
backlinksanchors1
backlinksall1
backlinkscount100
backlinksauthority/domain1
backlinksauthority/domain/distribution1
backlinksauthority1
backlinksreferring-ips1
backlinksreferring-ips/count100
backlinksmetrics100
backlinkshistory1
backlinkshistory/count100
backlinkshistory/cumulative100
backlinksrefdomains/history1
backlinksrefdomains/history/count100
backlinksauthority/page1
backlinksauthority/page/history1
backlinksindexed-pages1
backlinksraw1
backlinksrefdomains1
backlinksrefdomains/count100
backlinksreferring-subnets/count100
backlinkssummary100
gatewaysubscription
0

Cost per Request

For other endpoints, you are charged a flat rate for each successful API call.

ServiceCommandUnits per Request successful 2xx
domainoverview100
domainoverview/all100
domainoverview/db100
domainoverview/history100
domainkeywords100
domainads100
domaincompetitors100
domainkeywords/comparison100
keywordsexport100

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 creditsPlan 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
Enterprisecustomcustomcustomcustom

*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

Title of the code block
Copy
{
"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. 

CodeError TextSolution
200 (OK)Returned value for a parameter is a negative digitThis 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.
400Incorrect order field {sort} {sort_order}
400Exceeded keywords size. Max keywords for one request: 10000
400Invalid keywords
400Invalid source
400Invalid domain
400Incorrect order
400Row limit exceeded
400No tokenIncorrect APIKEY using, please review the APIKEY used in the authentication.
400 (Bad Request)Invalid targetPlease 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.
403License expiredLicense expired
404Invalid 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 ErrorUnexpected error. Please try again later.An unexpected error occurred (e.g.: a search engine parser is broken).
503 Service unavailableSystem is busy. Please try again later.The system is busy and can’t handle the request at the moment.