apyhub
DATA EXTRACTION · MARKETING

Advanced Domain Analysis API

What it does

Domain Analysis helps you inspect a domain’s organic and paid search footprint, compare competitors, and review keyword-level performance across regions and time.

Send a domain or URL together with a source, and get back structured SEO data for pages, subdomains, rankings, ads, and overview metrics. The endpoints support both current snapshots and historical views, plus worldwide and region-specific breakdowns. You can sort and filter by traffic, keywords, price, position, CPC, difficulty, competition, and intent, depending on the endpoint.

Use Domain Analysis when you need to map a site’s search visibility, find competing domains, or track keyword movement over time. For example, you can pull the pages driving the most traffic, compare keyword overlap between two domains, or inspect paid ads and their snippets for a target keyword or domain.

The responses are designed for direct ingestion into dashboards, reporting pipelines, or internal SEO tooling. You get fields such as url, title, keyword, traffic_sum, keywords_count, price_sum, cpc, volume, position, difficulty, competition, and intent or ranking breakdowns where the endpoint provides them.

▣ ENDPOINT 01 / 10
GET
Get Worldwide URL Overview
http://localhost:8080/se-ranking/domain-analysis/v1/domain/overview/worldwide/url
QUICKSTARTGUIDE

Quickstart

Fetch a worldwide domain overview for a URL by passing the target URL as a query parameter.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/overview/worldwide/url?url=https%3A%2F%2Fseranking.com%2Fapi.html" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with two optional array fields: adv and organic. Each array contains objects with source (always "worldwide"), price_sum as a number, traffic_sum as an integer, and keywords_count as an integer.

{
  "adv": [
    {
      "source": "worldwide",
      "price_sum": 1250.5,
      "traffic_sum": 3400,
      "keywords_count": 87
    }
  ],
  "organic": [
    {
      "source": "worldwide",
      "price_sum": 980.0,
      "traffic_sum": 12800,
      "keywords_count": 214
    }
  ]
}
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Retrieves a worldwide URL overview for the url you pass in the query string. The response is a JSON object containing adv and organic arrays with aggregated metrics for each result item.

Query Parameter(s)

AttributeTypeMandatoryDescription
urlStringYesThe URL to analyze.
fieldsStringNoOptional field selector.

Response

Returns a JSON object with two array fields: adv and organic. Each array contains objects with source, price_sum, traffic_sum, and keywords_count fields.

ParameterTypeMandatoryDescription
advObject ArrayNoArray of worldwide advertising overview items. Each item has:<br>- source (String): Always "worldwide".<br>- price_sum (Number): Floating-point total price sum.<br>- traffic_sum (Integer): Total traffic sum.<br>- keywords_count (Integer): Total keywords count.
organicObject ArrayNoArray of worldwide organic overview items. Each item has:<br>- source (String): Always "worldwide".<br>- price_sum (Number): Floating-point total price sum.<br>- traffic_sum (Integer): Total traffic sum.<br>- keywords_count (Integer): Total keywords count.

Query parameters

Name
Type
Description
urlREQUIRED
string
fieldsOPTIONAL
string
▣ ENDPOINT 02 / 10
GET
Get Domain Competitors
http://localhost:8080/se-ranking/domain-analysis/v1/domain/competitors
QUICKSTARTGUIDE

Quickstart

Fetch competitor domains for a given source and domain. The type query parameter is optional, so this minimal call uses the default organic value.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/competitors?source=us&domain=seranking.com&type=organic" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON array of competitor objects. Each object can include domain, price_sum, traffic_sum, total_keywords, common_keywords, domain_relevance, and missing_keywords.

[
  {
    "domain": "competitor.com",
    "price_sum": 123.45,
    "traffic_sum": 6789,
    "total_keywords": 250,
    "common_keywords": 42,
    "domain_relevance": 0.67,
    "missing_keywords": 208
  }
]
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns a list of competing domains for the given source domain, using the supplied domain and source query parameters. The response is a JSON array of competitor objects with aggregate metrics for each competitor.

Query Parameter(s)

AttributeTypeMandatoryDescription
typeENUMNoAllowed values: organic, adv.<br>Default: organic.
domainStringYesThe domain to analyze.
sourceStringYesThe source domain or source identifier used for the competitor lookup.

Response

Returns a JSON array of objects. Each object includes competitor metrics for a domain string, price_sum float, traffic_sum integer, total_keywords integer, common_keywords integer, domain_relevance float, and missing_keywords integer.

ParameterTypeMandatoryDescription
domainStringYesThe competitor domain.
price_sumNumberYesFloating-point aggregate price value for the competitor.
traffic_sumIntegerYesAggregate traffic value for the competitor.
total_keywordsIntegerYesTotal keyword count for the competitor.
common_keywordsIntegerYesNumber of keywords shared with the source domain.
domain_relevanceNumberYesFloating-point relevance score for the competitor domain.
missing_keywordsIntegerYesNumber of keywords missing from the competitor domain.

Query parameters

Name
Type
Description
typeOPTIONAL
string
organic · adv
DEFAULT organic
domainREQUIRED
string
sourceREQUIRED
string
▣ ENDPOINT 03 / 10
GET
Get Domain Keywords
http://localhost:8080/se-ranking/domain-analysis/v1/domain/keywords
QUICKSTARTGUIDE

Quickstart

Fetch keyword data for a domain by providing the required source query parameter.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/keywords?source=us&domain=apyhub.com&type=organic&limit=10&page=1&order_field=traffic&order_type=desc" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON array of objects. Each object can include keyword metrics such as keyword (string), volume (integer), traffic (integer), position (integer), cpc (number), price (number), difficulty (integer), competition (number), traffic_percent (number), url (string), intents (array of I, N, T, C, L), and other fields shown in the schema.

[
  {
    "keyword": "running shoes",
    "volume": 5400,
    "traffic": 120,
    "position": 3
  }
]
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns a list of domain keyword ranking records for the requested query parameters. Each item in the response represents one keyword snapshot with ranking, traffic, and related metrics.

Query Parameter(s)

AttributeTypeMandatoryDescription
urlStringNoDomain URL to analyze.
colsStringNoComma-separated columns to return.
pageIntegerNoPage number. Minimum: 1. Default: 1.
typeENUMNoKeyword type. Allowed values: organic, adv. Default: organic.
yearIntegerNoHistorical snapshot year.
limitIntegerNoNumber of records to return. Minimum: 1, maximum: 1000. Default: 100.
monthIntegerNoHistorical snapshot month. Minimum: 1, maximum: 12.
domainStringNoDomain to analyze.
sourceStringYesData source.
order_typeENUMNoSort direction. Allowed values: asc, desc. Default: desc.
pos_changeENUMNoFilter by position change. Allowed values: up, down, new, lost, diff, same.
filter[url]StringNoFilter by URL.
order_fieldENUMNoSort field. Allowed values: traffic, volume, position, cpc, competition, kei, difficulty, traffic_percent, price. Default: traffic.
filter[cpc][to]NumberNoMaximum CPC. Minimum: 0.
filter[intents]StringNoFilter by intents.
filter[keyword]StringNoFilter by keyword.
with_subdomainsBooleanNoInclude subdomains. Default: true.
filter[cpc][from]NumberNoMinimum CPC. Minimum: 0.
filter[price][to]NumberNoMaximum price. Minimum: 0.
filter[volume][to]IntegerNoMaximum volume. Minimum: 0.
filter[price][from]NumberNoMinimum price. Minimum: 0.
filter[traffic][to]IntegerNoMaximum traffic. Minimum: 0.
filter[position][to]IntegerNoMaximum position. Minimum: 1.
filter[volume][from]IntegerNoMinimum volume. Minimum: 0.
filter[serp_features]StringNoFilter by SERP features.
filter[traffic][from]IntegerNoMinimum traffic. Minimum: 0.
filter[difficulty][to]IntegerNoMaximum difficulty. Minimum: 0, maximum: 100.
filter[position][from]IntegerNoMinimum position. Minimum: 1.
filter[competition][to]NumberNoMaximum competition. Minimum: 0, maximum: 1.
filter[difficulty][from]IntegerNoMinimum difficulty. Minimum: 0, maximum: 100.
filter[competition][from]NumberNoMinimum competition. Minimum: 0, maximum: 1.
filter[keyword_count][to]IntegerNoMaximum keyword count. Minimum: 1.
filter[keyword_count][from]IntegerNoMinimum keyword count. Minimum: 1.
filter[traffic_percent][to]NumberNoMaximum traffic percent.
filter[characters_count][to]IntegerNoMaximum character count. Minimum: 1.
filter[serp_features_2][mode]ENUMNoSERP feature match mode. Allowed values: with_link, without_link.
filter[traffic_percent][from]NumberNoMinimum traffic percent.
filter[characters_count][from]IntegerNoMinimum character count. Minimum: 1.
filter[multi_keyword_excluded]StringNoExclude matching multi-keyword values.
filter[multi_keyword_included]StringNoInclude matching multi-keyword values.
filter[serp_features_2][value][0]StringNoFirst SERP feature value to match.

Response

Returns a JSON array of objects, where each object contains keyword ranking data for one result item. The top-level fields in each object include cpc (number), url (string), block (string), price (number), volume (integer), intents (array of strings), keyword (string), traffic (integer), position (integer), prev_pos (integer or null), block_type (string or null), difficulty (integer), competition (number), snippet_num (integer), total_sites (integer or null), serp_features (array of strings), snippet_title (string), block_position (integer), snippets_count (integer), traffic_percent (number), snippet_description (string), and snippet_display_url (string).

ParameterTypeMandatoryDescription
cpcNumberNoCPC value.
urlStringNoResult URL.
blockStringNoPaid only.
priceNumberNoPrice value.
volumeIntegerNoSearch volume.
intentsString ArrayNoIntent codes. Allowed values: I, N, T, C, L.
keywordStringNoKeyword text.
trafficIntegerNoTraffic value.
positionIntegerNoCurrent position.
prev_posIntegerNoPrevious position. Nullable.
block_typeStringNoBlock type. Nullable.
difficultyIntegerNoDifficulty score.
competitionNumberNoCompetition value.
snippet_numIntegerNoPaid only.
total_sitesIntegerNoTotal sites. Nullable.
serp_featuresString ArrayNoSERP features associated with the keyword.
snippet_titleStringNoPaid only.
block_positionIntegerNoBlock position.
snippets_countIntegerNoPaid only.
traffic_percentNumberNoTraffic share percentage.
snippet_descriptionStringNoPaid only.
snippet_display_urlStringNoPaid only.

Query parameters

Name
Type
Description
urlOPTIONAL
string
colsOPTIONAL
string
pageOPTIONAL
integer
DEFAULT 1
typeOPTIONAL
string
organic · adv
DEFAULT organic
yearOPTIONAL
integer
limitOPTIONAL
integer
DEFAULT 100
monthOPTIONAL
integer
domainOPTIONAL
string
sourceREQUIRED
string
order_typeOPTIONAL
string
asc · desc
DEFAULT desc
pos_changeOPTIONAL
string
up · down · new · lost · diff · …
filter[url]OPTIONAL
string
order_fieldOPTIONAL
string
traffic · volume · position · cpc · competition · …
DEFAULT traffic
filter[cpc][to]OPTIONAL
number
filter[intents]OPTIONAL
string
filter[keyword]OPTIONAL
string
with_subdomainsOPTIONAL
boolean
DEFAULT true
filter[cpc][from]OPTIONAL
number
filter[price][to]OPTIONAL
number
filter[volume][to]OPTIONAL
integer
filter[price][from]OPTIONAL
number
filter[traffic][to]OPTIONAL
integer
filter[position][to]OPTIONAL
integer
filter[volume][from]OPTIONAL
integer
filter[serp_features]OPTIONAL
string
filter[traffic][from]OPTIONAL
integer
filter[difficulty][to]OPTIONAL
integer
filter[position][from]OPTIONAL
integer
filter[competition][to]OPTIONAL
number
filter[difficulty][from]OPTIONAL
integer
filter[competition][from]OPTIONAL
number
filter[keyword_count][to]OPTIONAL
integer
filter[keyword_count][from]OPTIONAL
integer
filter[traffic_percent][to]OPTIONAL
number
filter[characters_count][to]OPTIONAL
integer
filter[serp_features_2][mode]OPTIONAL
string
with_link · without_link
filter[traffic_percent][from]OPTIONAL
number
filter[characters_count][from]OPTIONAL
integer
filter[multi_keyword_excluded]OPTIONAL
string
filter[multi_keyword_included]OPTIONAL
string
filter[serp_features_2][value][0]OPTIONAL
string
▣ ENDPOINT 04 / 10
GET
Get Domain Paid Ads
http://localhost:8080/se-ranking/domain-analysis/v1/domain/ads
QUICKSTARTGUIDE

Quickstart

Get domain ads data by providing the required source query parameter.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/ads?source=us&domain=booking.com&limit=10&page=1" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON array. Each item is one of two object shapes: a keyword-based result with fields like domain, snippets, ads_count, price_sum, traffic_sum, and keywords_count; or a domain-based result with cpc, volume, keyword, snippets, ads_count, and competition.

[
  {
    "domain": "example.com",
    "snippets": {},
    "ads_count": 12,
    "price_sum": 34.5,
    "traffic_sum": 1200,
    "keywords_count": 8
  }
]
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
YYYY-MM
YYYY-MM

About this endpoint

What it does

Returns paid ads data for either a keyword or a domain. The request is sent as query parameters, and the response is a JSON array whose item shape depends on whether you queried by keyword or by domain.

Query Parameter(s)

AttributeTypeMandatoryDescription
toStringNoYYYY-MM
fromStringNoYYYY-MM
pageIntegerNoDefault: 1
limitIntegerNoDefault: 100; minimum: 1; maximum: 100
domainStringNoQuery by domain.
sourceStringYesQuery source.
keywordStringNoQuery by keyword.

Response

Returns a JSON array. Each array item is an object, and the object shape depends on the request mode: when the request used keyword, each item contains domain, snippets, ads_count, price_sum, traffic_sum, and keywords_count; when the request used domain, each item contains cpc, volume, keyword, snippets, ads_count, and competition.

ParameterTypeMandatoryDescription
domainStringNoPresent in the keyword-based response shape.
snippetsObjectNoKeyed by YYYY-MM. Each value is an object with url, position, snippet_num, snippet_count, snippet_title, snippet_description, and snippet_display_url.
ads_countIntegerNoNumber of ads.
price_sumNumberNoFloat value. Present in the keyword-based response shape.
traffic_sumIntegerNoPresent in the keyword-based response shape.
keywords_countIntegerNoPresent in the keyword-based response shape.
cpcNumberNoFloat value. Present in the domain-based response shape.
volumeIntegerNoPresent in the domain-based response shape.
keywordStringNoPresent in the domain-based response shape.
competitionNumberNoFloat value. Present in the domain-based response shape.

Query parameters

Name
Type
Description
toOPTIONAL
string
YYYY-MM
fromOPTIONAL
string
YYYY-MM
pageOPTIONAL
integer
DEFAULT 1
limitOPTIONAL
integer
DEFAULT 100
domainOPTIONAL
string
sourceREQUIRED
string
keywordOPTIONAL
string
▣ ENDPOINT 05 / 10
GET
Get Regional Domain Overview
http://localhost:8080/se-ranking/domain-analysis/v1/domain/overview/db
QUICKSTARTGUIDE

Quickstart

Fetch the domain overview by providing the required source query parameter.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/overview/db?source=us&domain=seranking.com&with_subdomains=true" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with optional adv and organic object fields. Each object contains domain overview metrics such as year, month, target, base_domain, counts, traffic, and price totals.

{
  "adv": {
    "year": 2024,
    "month": 1,
    "target": "example.com",
    "top1_2": 10,
    "top3_5": 20,
    "top6_8": 5,
    "top9_11": 2,
    "price_sum": 123.45,
    "base_domain": "example.com",
    "traffic_sum": 1000,
    "keywords_count": 42,
    "keywords_up_count": 10,
    "keywords_new_count": 4,
    "keywords_down_count": 3,
    "keywords_lost_count": 1,
    "keywords_equal_count": 24
  },
  "organic": {
    "year": 2024,
    "month": 1,
    "target": "example.com",
    "top1_5": 8,
    "top6_10": 12,
    "top11_20": 15,
    "top21_50": 30,
    "price_sum": 98.76,
    "top51_100": 60,
    "base_domain": "example.com",
    "traffic_sum": 2000,
    "keywords_count": 60,
    "keywords_up_count": 12,
    "keywords_new_count": 6,
    "keywords_down_count": 4,
    "keywords_lost_count": 2,
    "keywords_equal_count": 36
  }
}
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Gets a domain overview by region for the supplied query parameters and returns two summary objects: adv and organic.

Query Parameter(s)

AttributeTypeMandatoryDescription
urlStringNoThe URL to analyze.
domainStringNoThe domain to analyze.
sourceStringYesThe source identifier to use for the overview lookup.
with_subdomainsIntegerNoAllowed values: 0, 1.<br>Default: 1.

Response

Returns a JSON object with two top-level object fields: adv and organic. Each field contains regional domain overview metrics such as year, month, target, rank-bucket counts, price_sum, base_domain, traffic_sum, and keyword counts. Success status code is not declared in the schema.

ParameterTypeMandatoryDescription
advObjectNoRegional paid/advertising overview metrics object.
adv.yearIntegerNoYear for the overview data.
adv.monthIntegerNoMonth for the overview data.
adv.targetStringNoTarget identifier for the overview.
adv.top1_2IntegerNoCount in the 1–2 position bucket.
adv.top3_5IntegerNoCount in the 3–5 position bucket.
adv.top6_8IntegerNoCount in the 6–8 position bucket.
adv.top9_11IntegerNoCount in the 9–11 position bucket.
adv.price_sumNumberNoTotal price sum as a floating-point number.
adv.base_domainStringNoBase domain associated with the overview.
adv.traffic_sumIntegerNoTotal traffic sum.
adv.keywords_countIntegerNoTotal number of keywords.
adv.keywords_up_countIntegerNoNumber of keywords that moved up.
adv.keywords_new_countIntegerNoNumber of new keywords.
adv.keywords_down_countIntegerNoNumber of keywords that moved down.
adv.keywords_lost_countIntegerNoNumber of lost keywords.
adv.keywords_equal_countIntegerNoNumber of unchanged keywords.
organicObjectNoRegional organic overview metrics object.
organic.yearIntegerNoYear for the overview data.
organic.monthIntegerNoMonth for the overview data.
organic.targetStringNoTarget identifier for the overview.
organic.top1_5IntegerNoCount in the 1–5 position bucket.
organic.top6_10IntegerNoCount in the 6–10 position bucket.
organic.top11_20IntegerNoCount in the 11–20 position bucket.
organic.top21_50IntegerNoCount in the 21–50 position bucket.
organic.price_sumNumberNoTotal price sum as a floating-point number.
organic.top51_100IntegerNoCount in the 51–100 position bucket.
organic.base_domainStringNoBase domain associated with the overview.
organic.traffic_sumIntegerNoTotal traffic sum.
organic.keywords_countIntegerNoTotal number of keywords.
organic.keywords_up_countIntegerNoNumber of keywords that moved up.
organic.keywords_new_countIntegerNoNumber of new keywords.
organic.keywords_down_countIntegerNoNumber of keywords that moved down.
organic.keywords_lost_countIntegerNoNumber of lost keywords.
organic.keywords_equal_countIntegerNoNumber of unchanged keywords.

Query parameters

Name
Type
Description
urlOPTIONAL
string
domainOPTIONAL
string
sourceOPTIONAL
string
with_subdomainsOPTIONAL
boolean
DEFAULT true
▣ ENDPOINT 06 / 10
GET
Get Worldwide Domain Overview
http://localhost:8080/se-ranking/domain-analysis/v1/domain/overview/worldwide
QUICKSTARTGUIDE

Quickstart

Fetch a worldwide domain overview for a domain by passing it as a query parameter.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/overview/worldwide?domain=seranking.com&currency=USD&with_subdomains=1" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with two top-level array fields: adv and organic. Each array contains objects with domain overview metrics such as source, country, price_sum, traffic_sum, keywords_count, positions_tops, and the position counters.

{
  "adv": [],
  "organic": []
}
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns a worldwide domain overview for the specified domain. The response contains separate adv and organic arrays with per-country/source metrics such as traffic, keyword counts, and position distribution.

Query Parameter(s)

AttributeTypeMandatoryDescription
urlStringNoDomain URL to analyze.
domainStringYesDomain to analyze.
fieldsStringNoFilters or selects response fields.
currencyStringNoCurrency used for price-related values. Default: USD.
show_zones_listENUMNoWhether to include the zones list.<br>Allowed values: 0, 1.<br>Default: 0.
with_subdomainsENUMNoWhether to include subdomains.<br>Allowed values: 0, 1.<br>Default: 1.

Response

Returns a JSON object with two array fields: adv and organic. Each array item is an object containing source and country-level metrics, including price_sum, traffic_sum, keywords_count, positions_tops, and several position change counts. Success uses the documented GET /v1/domain/overview/worldwide response shape.

ParameterTypeMandatoryDescription
advObject ArrayNoArray of advertising overview objects. Each item includes source, country, price_sum, traffic_sum, keywords_count, positions_tops, positions_up_count, positions_new_count, positions_down_count, positions_lost_count, and positions_equal_count.
adv[].sourceStringNoData source identifier.
adv[].countryStringNoCountry associated with the metrics.
adv[].price_sumNumberNoSum of prices. Float value.
adv[].traffic_sumIntegerNoTotal traffic.
adv[].keywords_countIntegerNoTotal keyword count.
adv[].positions_topsObjectNoPosition distribution object with top-rank buckets.
adv[].positions_tops.top1_2IntegerNoCount of positions in the 1-2 bucket.
adv[].positions_tops.top1_5IntegerNoCount of positions in the 1-5 bucket.
adv[].positions_tops.top3_5IntegerNoCount of positions in the 3-5 bucket.
adv[].positions_tops.top6_8IntegerNoCount of positions in the 6-8 bucket.
adv[].positions_tops.top6_10IntegerNoCount of positions in the 6-10 bucket.
adv[].positions_tops.top9_11IntegerNoCount of positions in the 9-11 bucket.
adv[].positions_tops.top11_20IntegerNoCount of positions in the 11-20 bucket.
adv[].positions_tops.top21_50IntegerNoCount of positions in the 21-50 bucket.
adv[].positions_tops.top51_100IntegerNoCount of positions in the 51-100 bucket.
adv[].positions_up_countIntegerNoCount of positions that moved up.
adv[].positions_new_countIntegerNoCount of new positions.
adv[].positions_down_countIntegerNoCount of positions that moved down.
adv[].positions_lost_countIntegerNoCount of lost positions.
adv[].positions_equal_countIntegerNoCount of positions that stayed equal.
organicObject ArrayNoArray of organic overview objects. Each item includes source, country, price_sum, traffic_sum, keywords_count, positions_tops, and position change counts.
organic[].sourceStringNoData source identifier.
organic[].countryStringNoCountry associated with the metrics.
organic[].price_sumNumberNoSum of prices. Float value.
organic[].traffic_sumIntegerNoTotal traffic.
organic[].keywords_countIntegerNoTotal keyword count.
organic[].positions_topsObjectNoPosition distribution object with top-rank buckets.
organic[].positions_tops.top1_2IntegerNoCount of positions in the 1-2 bucket.
organic[].positions_tops.top1_5IntegerNoCount of positions in the 1-5 bucket.
organic[].positions_tops.top3_5IntegerNoCount of positions in the 3-5 bucket.
organic[].positions_tops.top6_8IntegerNoCount of positions in the 6-8 bucket.
organic[].positions_tops.top6_10IntegerNoCount of positions in the 6-10 bucket.
organic[].positions_tops.top9_11IntegerNoCount of positions in the 9-11 bucket.
organic[].positions_tops.top11_20IntegerNoCount of positions in the 11-20 bucket.
organic[].positions_tops.top21_50IntegerNoCount of positions in the 21-50 bucket.
organic[].positions_tops.top51_100IntegerNoCount of positions in the 51-100 bucket.
organic[].positions_up_countIntegerNoCount of positions that moved up.
organic[].positions_new_countIntegerNoCount of new positions.
organic[].positions_down_countIntegerNoCount of positions that moved down.
organic[].positions_lost_countIntegerNoCount of lost positions.
organic[].positions_equal_countIntegerNoCount of positions that stayed equal.

Query parameters

Name
Type
Description
urlOPTIONAL
string
domainREQUIRED
string
fieldsOPTIONAL
string
currencyOPTIONAL
string
DEFAULT USD
show_zones_listOPTIONAL
string
0 · 1
DEFAULT 0
with_subdomainsOPTIONAL
integer
0 · 1
DEFAULT 1
▣ ENDPOINT 07 / 10
GET
Get Top Domain Pages
http://localhost:8080/se-ranking/domain-analysis/v1/domain/pages
QUICKSTARTGUIDE

Quickstart

Fetch domain pages by passing the required target, scope, and source query parameters.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/pages?target=seranking.com&scope=domain&source=us&type=organic&limit=100" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON array of objects. Each object can include url, title, intents, price_sum, traffic_sum, keywords_count, and traffic_percent.

[
  {
    "url": "https://example.com/pricing",
    "title": "Pricing",
    "price_sum": 120.5,
    "traffic_sum": 3400,
    "keywords_count": 85,
    "traffic_percent": 12.4
  }
]
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns a list of pages for a domain lookup, with each item including the page URL, title, intent breakdown, and aggregate metrics such as price, traffic, keyword count, and traffic percent. The request is configured through query parameters that control the target, scope, ordering, pagination, and optional filters.

Query Parameter(s)

AttributeTypeMandatoryDescription
typeStringNoAllowed values: organic, adv.<br>Default: organic.
limitIntegerNoDefault: 1000.
scopeStringYesAllowed values: base_domain, domain, url.
offsetIntegerNoPagination offset.
sourceStringYesSource domain or source value.
targetStringYesTarget domain or target value.
order_typeStringNoAllowed values: asc, desc.<br>Default: desc.
order_fieldStringNoAllowed values: keywords_count, traffic_sum, traffic_percent, price_sum.<br>Default: keywords_count.
filter[domain_url]StringNoFilter by domain URL.
filter[price_sum][to]NumberNoUpper bound for price_sum.
filter[price_sum][from]NumberNoLower bound for price_sum.
filter[traffic_sum][to]IntegerNoUpper bound for traffic_sum.
filter[traffic_sum][from]IntegerNoLower bound for traffic_sum.
filter[keywords_count][to]IntegerNoUpper bound for keywords_count.
filter[keywords_count][from]IntegerNoLower bound for keywords_count.
filter[domain_traffic_percent][to]NumberNoUpper bound for traffic_percent filtering.
filter[domain_traffic_percent][from]NumberNoLower bound for traffic_percent filtering.

Response

Returns a JSON array of page objects. Each item includes url and title strings, an intents object with C, I, L, N, and T intent objects, and the aggregate metrics price_sum, traffic_sum, keywords_count, and traffic_percent.

ParameterTypeMandatoryDescription
urlStringNoPage URL.
titleStringNoPage title.
intentsObjectNoIntent breakdown object containing C, I, L, N, and T.
intents.CObjectNoIntent C object.
intents.C.countIntegerNoCount for intent C.
intents.C.trafficIntegerNoTraffic for intent C.
intents.C.percentsNumberNoPercentage for intent C (float).
intents.IObjectNoIntent I object.
intents.I.countIntegerNoCount for intent I.
intents.I.trafficIntegerNoTraffic for intent I.
intents.I.percentsNumberNoPercentage for intent I (float).
intents.LObjectNoIntent L object.
intents.L.countIntegerNoCount for intent L.
intents.L.trafficIntegerNoTraffic for intent L.
intents.L.percentsNumberNoPercentage for intent L (float).
intents.NObjectNoIntent N object.
intents.N.countIntegerNoCount for intent N.
intents.N.trafficIntegerNoTraffic for intent N.
intents.N.percentsNumberNoPercentage for intent N (float).
intents.TObjectNoIntent T object.
intents.T.countIntegerNoCount for intent T.
intents.T.trafficIntegerNoTraffic for intent T.
intents.T.percentsNumberNoPercentage for intent T (float).
price_sumNumberNoTotal price_sum value (float).
traffic_sumIntegerNoTotal traffic sum.
keywords_countIntegerNoTotal keywords count.
traffic_percentNumberNoTotal traffic percent (float).

Query parameters

Name
Type
Description
typeOPTIONAL
string
organic · adv
DEFAULT organic
limitOPTIONAL
integer
DEFAULT 1000
scopeREQUIRED
string
base_domain · domain · url
offsetOPTIONAL
integer
sourceREQUIRED
string
targetREQUIRED
string
order_typeOPTIONAL
string
asc · desc
DEFAULT desc
order_fieldOPTIONAL
string
keywords_count · traffic_sum · traffic_percent · price_sum
DEFAULT keywords_count
filter[domain_url]OPTIONAL
string
filter[price_sum][to]OPTIONAL
number
filter[price_sum][from]OPTIONAL
number
filter[traffic_sum][to]OPTIONAL
integer
filter[traffic_sum][from]OPTIONAL
integer
filter[keywords_count][to]OPTIONAL
integer
filter[keywords_count][from]OPTIONAL
integer
filter[domain_traffic_percent][to]OPTIONAL
number
filter[domain_traffic_percent][from]OPTIONAL
number
▣ ENDPOINT 08 / 10
GET
Compare Domain Keywords
http://localhost:8080/se-ranking/domain-analysis/v1/domain/keywords/comparison
QUICKSTARTGUIDE

Quickstart

Compare keyword data between two sources for a domain and return the matching keyword rows.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/keywords/comparison?source=us&domain=apple.com&compare=samsung.com&type=organic&limit=10" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON array of objects. Each object can include keyword as a string, volume and difficulty as integers, cpc and competition as numbers, and position as an integer or null.

[
  {
    "cpc": 1.25,
    "volume": 9900,
    "keyword": "domain analysis",
    "position": 3,
    "difficulty": 42,
    "competition": 0.78
  }
]
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Compares keyword overlap and gaps between two domains or URLs, returning a filtered, ordered list of keyword rows with associated SEO metrics.

Query Parameter(s)

AttributeTypeMandatoryDescription
urlStringNoTarget URL to analyze.
colsStringNoSelects which columns to return.
diffENUMNoDifference mode. Allowed values: 0, 1. Default: 0.
pageIntegerNoPage number. Default: 1.
typeENUMNoResult type. Allowed values: organic, adv. Default: organic.
limitIntegerNoMaximum number of items to return. Default: 100. Minimum: 1. Maximum: 1000.
domainStringNoDomain to analyze.
sourceStringYesSource domain or URL.
compareStringYesDomain or URL to compare against the source.
order_typeENUMNoSort direction. Allowed values: asc, desc. Default: asc.
order_fieldENUMNoSort field. Allowed values: keyword, volume, cpc, competition, difficulty, position. Default: keyword.
filter[cpc][to]NumberNoMaximum CPC filter value.
filter[intents]StringNoFilter by intent values.
filter[keyword]StringNoFilter by keyword text.
filter[cpc][from]NumberNoMinimum CPC filter value.
filter[volume][to]IntegerNoMaximum volume filter value.
filter[volume][from]IntegerNoMinimum volume filter value.
filter[serp_features]StringNoFilter by SERP features.
filter[difficulty][to]IntegerNoMaximum difficulty filter value. Minimum: 0. Maximum: 100.
filter[competition][to]NumberNoMaximum competition filter value. Minimum: 0. Maximum: 1.
filter[difficulty][from]IntegerNoMinimum difficulty filter value. Minimum: 0. Maximum: 100.
filter[competition][from]NumberNoMinimum competition filter value. Minimum: 0. Maximum: 1.
filter[multi_keyword_excluded]StringNoExcludes keywords matching the provided value.
filter[multi_keyword_included]StringNoIncludes keywords matching the provided value.

Response

Returns a JSON array of keyword objects. Each item contains cpc as a number, volume as an integer, keyword as a string, position as an integer or null, difficulty as an integer, and competition as a number.

AttributeTypeMandatoryDescription
cpcNumberYesCost-per-click value as a float.
volumeIntegerYesKeyword volume.
keywordStringYesKeyword text.
positionIntegerYesKeyword position; nullable in the schema.
difficultyIntegerYesKeyword difficulty.
competitionNumberYesCompetition value as a float.

Query parameters

Name
Type
Description
urlOPTIONAL
string
colsOPTIONAL
string
diffOPTIONAL
string
0 · 1
DEFAULT 0
pageOPTIONAL
integer
DEFAULT 1
typeOPTIONAL
string
organic · adv
DEFAULT organic
limitOPTIONAL
integer
DEFAULT 100
domainOPTIONAL
string
sourceREQUIRED
string
compareREQUIRED
string
order_typeOPTIONAL
string
asc · desc
DEFAULT asc
order_fieldOPTIONAL
string
keyword · volume · cpc · competition · difficulty · …
DEFAULT keyword
filter[cpc][to]OPTIONAL
number
filter[intents]OPTIONAL
string
filter[keyword]OPTIONAL
string
filter[cpc][from]OPTIONAL
number
filter[volume][to]OPTIONAL
integer
filter[volume][from]OPTIONAL
integer
filter[serp_features]OPTIONAL
string
filter[difficulty][to]OPTIONAL
integer
filter[competition][to]OPTIONAL
number
filter[difficulty][from]OPTIONAL
integer
filter[competition][from]OPTIONAL
number
filter[multi_keyword_excluded]OPTIONAL
string
filter[multi_keyword_included]OPTIONAL
string
▣ ENDPOINT 09 / 10
GET
Get Domain Historical Trends
http://localhost:8080/se-ranking/domain-analysis/v1/domain/overview/history
QUICKSTARTGUIDE

Quickstart

Fetch the domain history for a source by passing the required source query parameter.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/overview/history?source=us&domain=seranking.com&type=organic&with_subdomains=1" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON array of objects. Each object may include fields such as year, month, top1_2, top1_5, top3_5, top6_8, top6_10, top9_11, top11_20, top21_50, price_sum, top51_100, traffic_sum, and keywords_count.

[
  {
    "year": 2024,
    "month": 1,
    "top1_2": 12,
    "top1_5": 18,
    "top3_5": 9,
    "top6_8": 6,
    "top6_10": 4,
    "top9_11": 3,
    "top11_20": 15,
    "top21_50": 27,
    "price_sum": 124.5,
    "top51_100": 8,
    "traffic_sum": 3200,
    "keywords_count": 54
  }
]
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns domain traffic and keyword history for the requested query parameters. The response is an array of monthly history objects, each containing traffic, keyword counts, and ranking-bucket metrics.

Query Parameter(s)

AttributeTypeMandatoryDescription
urlStringNoDomain URL to analyze.
typeENUMNoTraffic type.<br>- organic<br>- adv<br>Default: organic
domainStringNoDomain name to analyze.
sourceStringYesSource identifier used by the service.
with_subdomainsENUMNoWhether to include subdomains.<br>- 0<br>- 1<br>Default: 1

Response

Returns a JSON array of objects, where each object represents one month of domain history. Each item includes year and month integers, ranking-bucket integer fields, price_sum as a floating-point number, traffic_sum as an integer, and keywords_count as an integer.

ParameterTypeMandatoryDescription
yearIntegerNoYear of the history record.
monthIntegerNoMonth of the history record.
top1_2IntegerNoCount for the top1_2 bucket.
top1_5IntegerNoCount for the top1_5 bucket.
top3_5IntegerNoCount for the top3_5 bucket.
top6_8IntegerNoCount for the top6_8 bucket.
top6_10IntegerNoCount for the top6_10 bucket.
top9_11IntegerNoCount for the top9_11 bucket.
top11_20IntegerNoCount for the top11_20 bucket.
top21_50IntegerNoCount for the top21_50 bucket.
price_sumNumberNoFloating-point sum value for the record.
top51_100IntegerNoCount for the top51_100 bucket.
traffic_sumIntegerNoTotal traffic for the month.
keywords_countIntegerNoTotal keyword count for the month.

Query parameters

Name
Type
Description
urlOPTIONAL
string
typeOPTIONAL
string
organic · adv
DEFAULT organic
domainOPTIONAL
string
sourceREQUIRED
string
with_subdomainsOPTIONAL
integer
0 · 1
DEFAULT 1
▣ ENDPOINT 10 / 10
GET
Get Domain Subdomains
http://localhost:8080/se-ranking/domain-analysis/v1/domain/subdomains
QUICKSTARTGUIDE

Quickstart

Fetch subdomains for the required target and scope, using the source you want to query.

curl -X GET "http://localhost:8080/se-ranking/domain-analysis/v1/domain/subdomains?target=seranking.com&scope=domain&source=us&type=organic&limit=1000" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON array of objects. Each object can include url (string), price_sum (number), traffic_sum (integer), keywords_count (integer), and traffic_percent (number).

[
  {
    "url": "blog.example.com",
    "price_sum": 120.5,
    "traffic_sum": 3400,
    "keywords_count": 87,
    "traffic_percent": 12.4
  }
]
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns a list of subdomains for the domain identified by the query parameters. The response is a JSON array of subdomain objects, each containing the fields defined in the output schema.

Query Parameter(s)

AttributeTypeMandatoryDescription
typeENUMNoAllowed values: organic, adv.<br>Default: organic.
limitIntegerNoMaximum number of results to return.<br>Default: 1000.
scopeENUMYesAllowed values: base_domain, domain.
offsetIntegerNoResult offset for pagination.
sourceStringYesSource identifier used to filter the subdomain data.
targetStringYesTarget domain to analyze.
order_typeENUMNoAllowed values: asc, desc.<br>Default: desc.
order_fieldENUMNoAllowed values: keywords_count, traffic_sum, traffic_percent, price_sum.<br>Default: keywords_count.
filter[domain_url]StringNoFilters results by domain URL.
filter[price_sum][to]NumberNoUpper bound for price_sum.
filter[price_sum][from]NumberNoLower bound for price_sum.
filter[traffic_sum][to]IntegerNoUpper bound for traffic_sum.
filter[traffic_sum][from]IntegerNoLower bound for traffic_sum.
filter[keywords_count][to]IntegerNoUpper bound for keywords_count.
filter[keywords_count][from]IntegerNoLower bound for keywords_count.
filter[domain_traffic_percent][to]NumberNoUpper bound for traffic_percent.
filter[domain_traffic_percent][from]NumberNoLower bound for traffic_percent.

Response

Returns a JSON array of objects. Each object has url as a string, price_sum as a float number, traffic_sum as an integer, keywords_count as an integer, and traffic_percent as a float number.

AttributeTypeMandatoryDescription
urlStringNoSubdomain URL.
price_sumNumberNoPrice sum as a floating-point value.
traffic_sumIntegerNoTraffic sum.
keywords_countIntegerNoNumber of keywords.
traffic_percentNumberNoTraffic percentage as a floating-point value.

Query parameters

Name
Type
Description
typeOPTIONAL
string
organic · adv
DEFAULT organic
limitOPTIONAL
integer
DEFAULT 1000
scopeREQUIRED
string
base_domain · domain
offsetOPTIONAL
integer
sourceREQUIRED
string
targetREQUIRED
string
order_typeOPTIONAL
string
asc · desc
DEFAULT desc
order_fieldOPTIONAL
string
keywords_count · traffic_sum · traffic_percent · price_sum
DEFAULT keywords_count
filter[domain_url]OPTIONAL
string
filter[price_sum][to]OPTIONAL
number
filter[price_sum][from]OPTIONAL
number
filter[traffic_sum][to]OPTIONAL
integer
filter[traffic_sum][from]OPTIONAL
integer
filter[keywords_count][to]OPTIONAL
integer
filter[keywords_count][from]OPTIONAL
integer
filter[domain_traffic_percent][to]OPTIONAL
number
filter[domain_traffic_percent][from]OPTIONAL
number
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.