apyhub
Back
▣ 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
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/worldwide/url

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
urlStringThe URL to analyze.
fieldsStringOptional 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.

ParameterTypeDescription
advObject ArrayArray of worldwide advertising overview items. Each item has:
- source (String): Always "worldwide".
- price_sum (Number): Floating-point total price sum.
- traffic_sum (Integer): Total traffic sum.
- keywords_count (Integer): Total keywords count.
organicObject ArrayArray of worldwide organic overview items. Each item has:
- source (String): Always "worldwide".
- price_sum (Number): Floating-point total price sum.
- traffic_sum (Integer): Total traffic sum.
- keywords_count (Integer): Total keywords count.
▣ ENDPOINT 02 / 10
GET
Get Domain Competitors
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/competitors

QUICKSTART

GUIDE

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 "https://api.eu.apyhub.com/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)

AttributeTypeDescription
typeENUMAllowed values: organic, adv.
Default: organic.
domainStringThe domain to analyze.
sourceStringThe 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.

ParameterTypeDescription
domainStringThe competitor domain.
price_sumNumberFloating-point aggregate price value for the competitor.
traffic_sumIntegerAggregate traffic value for the competitor.
total_keywordsIntegerTotal keyword count for the competitor.
common_keywordsIntegerNumber of keywords shared with the source domain.
domain_relevanceNumberFloating-point relevance score for the competitor domain.
missing_keywordsIntegerNumber of keywords missing from the competitor domain.
▣ ENDPOINT 03 / 10
GET
Get Domain Keywords
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/keywords

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
urlStringDomain URL to analyze.
colsStringComma-separated columns to return.
pageIntegerPage number. Minimum: 1. Default: 1.
typeENUMKeyword type. Allowed values: organic, adv. Default: organic.
yearIntegerHistorical snapshot year.
limitIntegerNumber of records to return. Minimum: 1, maximum: 1000. Default: 100.
monthIntegerHistorical snapshot month. Minimum: 1, maximum: 12.
domainStringDomain to analyze.
sourceStringData source.
order_typeENUMSort direction. Allowed values: asc, desc. Default: desc.
pos_changeENUMFilter by position change. Allowed values: up, down, new, lost, diff, same.
filter[url]StringFilter by URL.
order_fieldENUMSort field. Allowed values: traffic, volume, position, cpc, competition, kei, difficulty, traffic_percent, price. Default: traffic.
filter[cpc][to]NumberMaximum CPC. Minimum: 0.
filter[intents]StringFilter by intents.
filter[keyword]StringFilter by keyword.
with_subdomainsBooleanInclude subdomains. Default: true.
filter[cpc][from]NumberMinimum CPC. Minimum: 0.
filter[price][to]NumberMaximum price. Minimum: 0.
filter[volume][to]IntegerMaximum volume. Minimum: 0.
filter[price][from]NumberMinimum price. Minimum: 0.
filter[traffic][to]IntegerMaximum traffic. Minimum: 0.
filter[position][to]IntegerMaximum position. Minimum: 1.
filter[volume][from]IntegerMinimum volume. Minimum: 0.
filter[serp_features]StringFilter by SERP features.
filter[traffic][from]IntegerMinimum traffic. Minimum: 0.
filter[difficulty][to]IntegerMaximum difficulty. Minimum: 0, maximum: 100.
filter[position][from]IntegerMinimum position. Minimum: 1.
filter[competition][to]NumberMaximum competition. Minimum: 0, maximum: 1.
filter[difficulty][from]IntegerMinimum difficulty. Minimum: 0, maximum: 100.
filter[competition][from]NumberMinimum competition. Minimum: 0, maximum: 1.
filter[keyword_count][to]IntegerMaximum keyword count. Minimum: 1.
filter[keyword_count][from]IntegerMinimum keyword count. Minimum: 1.
filter[traffic_percent][to]NumberMaximum traffic percent.
filter[characters_count][to]IntegerMaximum character count. Minimum: 1.
filter[serp_features_2][mode]ENUMSERP feature match mode. Allowed values: with_link, without_link.
filter[traffic_percent][from]NumberMinimum traffic percent.
filter[characters_count][from]IntegerMinimum character count. Minimum: 1.
filter[multi_keyword_excluded]StringExclude matching multi-keyword values.
filter[multi_keyword_included]StringInclude matching multi-keyword values.
filter[serp_features_2][value][0]StringFirst 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).

ParameterTypeDescription
cpcNumberCPC value.
urlStringResult URL.
blockStringPaid only.
priceNumberPrice value.
volumeIntegerSearch volume.
intentsString ArrayIntent codes. Allowed values: I, N, T, C, L.
keywordStringKeyword text.
trafficIntegerTraffic value.
positionIntegerCurrent position.
prev_posIntegerPrevious position. Nullable.
block_typeStringBlock type. Nullable.
difficultyIntegerDifficulty score.
competitionNumberCompetition value.
snippet_numIntegerPaid only.
total_sitesIntegerTotal sites. Nullable.
serp_featuresString ArraySERP features associated with the keyword.
snippet_titleStringPaid only.
block_positionIntegerBlock position.
snippets_countIntegerPaid only.
traffic_percentNumberTraffic share percentage.
snippet_descriptionStringPaid only.
snippet_display_urlStringPaid only.
▣ ENDPOINT 04 / 10
GET
Get Domain Paid Ads
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/ads

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
toStringYYYY-MM
fromStringYYYY-MM
pageIntegerDefault: 1
limitIntegerDefault: 100; minimum: 1; maximum: 100
domainStringQuery by domain.
sourceStringQuery source.
keywordStringQuery 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.

ParameterTypeDescription
domainStringPresent in the keyword-based response shape.
snippetsObjectKeyed by YYYY-MM. Each value is an object with url, position, snippet_num, snippet_count, snippet_title, snippet_description, and snippet_display_url.
ads_countIntegerNumber of ads.
price_sumNumberFloat value. Present in the keyword-based response shape.
traffic_sumIntegerPresent in the keyword-based response shape.
keywords_countIntegerPresent in the keyword-based response shape.
cpcNumberFloat value. Present in the domain-based response shape.
volumeIntegerPresent in the domain-based response shape.
keywordStringPresent in the domain-based response shape.
competitionNumberFloat value. Present in the domain-based response shape.
▣ ENDPOINT 05 / 10
GET
Get Regional Domain Overview
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/db

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
urlStringThe URL to analyze.
domainStringThe domain to analyze.
sourceStringThe source identifier to use for the overview lookup.
with_subdomainsBooleanWhether to include subdomains in the domain overview. Default: true.

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.

ParameterTypeDescription
advObjectRegional paid/advertising overview metrics object.
adv.yearIntegerYear for the overview data.
adv.monthIntegerMonth for the overview data.
adv.targetStringTarget identifier for the overview.
adv.top1_2IntegerCount in the 1–2 position bucket.
adv.top3_5IntegerCount in the 3–5 position bucket.
adv.top6_8IntegerCount in the 6–8 position bucket.
adv.top9_11IntegerCount in the 9–11 position bucket.
adv.price_sumNumberTotal price sum as a floating-point number.
adv.base_domainStringBase domain associated with the overview.
adv.traffic_sumIntegerTotal traffic sum.
adv.keywords_countIntegerTotal number of keywords.
adv.keywords_up_countIntegerNumber of keywords that moved up.
adv.keywords_new_countIntegerNumber of new keywords.
adv.keywords_down_countIntegerNumber of keywords that moved down.
adv.keywords_lost_countIntegerNumber of lost keywords.
adv.keywords_equal_countIntegerNumber of unchanged keywords.
organicObjectRegional organic overview metrics object.
organic.yearIntegerYear for the overview data.
organic.monthIntegerMonth for the overview data.
organic.targetStringTarget identifier for the overview.
organic.top1_5IntegerCount in the 1–5 position bucket.
organic.top6_10IntegerCount in the 6–10 position bucket.
organic.top11_20IntegerCount in the 11–20 position bucket.
organic.top21_50IntegerCount in the 21–50 position bucket.
organic.price_sumNumberTotal price sum as a floating-point number.
organic.top51_100IntegerCount in the 51–100 position bucket.
organic.base_domainStringBase domain associated with the overview.
organic.traffic_sumIntegerTotal traffic sum.
organic.keywords_countIntegerTotal number of keywords.
organic.keywords_up_countIntegerNumber of keywords that moved up.
organic.keywords_new_countIntegerNumber of new keywords.
organic.keywords_down_countIntegerNumber of keywords that moved down.
organic.keywords_lost_countIntegerNumber of lost keywords.
organic.keywords_equal_countIntegerNumber of unchanged keywords.
▣ ENDPOINT 06 / 10
GET
Get Worldwide Domain Overview
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/worldwide

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
urlStringDomain URL to analyze.
domainStringDomain to analyze.
fieldsStringFilters or selects response fields.
currencyStringCurrency used for price-related values. Default: USD.
show_zones_listENUMWhether to include the zones list.
Allowed values: 0, 1.
Default: 0.
with_subdomainsENUMWhether to include subdomains.
Allowed values: 0, 1.
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.

ParameterTypeDescription
advObject ArrayArray 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[].sourceStringData source identifier.
adv[].countryStringCountry associated with the metrics.
adv[].price_sumNumberSum of prices. Float value.
adv[].traffic_sumIntegerTotal traffic.
adv[].keywords_countIntegerTotal keyword count.
adv[].positions_topsObjectPosition distribution object with top-rank buckets.
adv[].positions_tops.top1_2IntegerCount of positions in the 1-2 bucket.
adv[].positions_tops.top1_5IntegerCount of positions in the 1-5 bucket.
adv[].positions_tops.top3_5IntegerCount of positions in the 3-5 bucket.
adv[].positions_tops.top6_8IntegerCount of positions in the 6-8 bucket.
adv[].positions_tops.top6_10IntegerCount of positions in the 6-10 bucket.
adv[].positions_tops.top9_11IntegerCount of positions in the 9-11 bucket.
adv[].positions_tops.top11_20IntegerCount of positions in the 11-20 bucket.
adv[].positions_tops.top21_50IntegerCount of positions in the 21-50 bucket.
adv[].positions_tops.top51_100IntegerCount of positions in the 51-100 bucket.
adv[].positions_up_countIntegerCount of positions that moved up.
adv[].positions_new_countIntegerCount of new positions.
adv[].positions_down_countIntegerCount of positions that moved down.
adv[].positions_lost_countIntegerCount of lost positions.
adv[].positions_equal_countIntegerCount of positions that stayed equal.
organicObject ArrayArray of organic overview objects. Each item includes source, country, price_sum, traffic_sum, keywords_count, positions_tops, and position change counts.
organic[].sourceStringData source identifier.
organic[].countryStringCountry associated with the metrics.
organic[].price_sumNumberSum of prices. Float value.
organic[].traffic_sumIntegerTotal traffic.
organic[].keywords_countIntegerTotal keyword count.
organic[].positions_topsObjectPosition distribution object with top-rank buckets.
organic[].positions_tops.top1_2IntegerCount of positions in the 1-2 bucket.
organic[].positions_tops.top1_5IntegerCount of positions in the 1-5 bucket.
organic[].positions_tops.top3_5IntegerCount of positions in the 3-5 bucket.
organic[].positions_tops.top6_8IntegerCount of positions in the 6-8 bucket.
organic[].positions_tops.top6_10IntegerCount of positions in the 6-10 bucket.
organic[].positions_tops.top9_11IntegerCount of positions in the 9-11 bucket.
organic[].positions_tops.top11_20IntegerCount of positions in the 11-20 bucket.
organic[].positions_tops.top21_50IntegerCount of positions in the 21-50 bucket.
organic[].positions_tops.top51_100IntegerCount of positions in the 51-100 bucket.
organic[].positions_up_countIntegerCount of positions that moved up.
organic[].positions_new_countIntegerCount of new positions.
organic[].positions_down_countIntegerCount of positions that moved down.
organic[].positions_lost_countIntegerCount of lost positions.
organic[].positions_equal_countIntegerCount of positions that stayed equal.
▣ ENDPOINT 07 / 10
GET
Get Top Domain Pages
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/pages

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
typeStringAllowed values: organic, adv.
Default: organic.
limitIntegerDefault: 1000.
scopeStringAllowed values: base_domain, domain, url.
offsetIntegerPagination offset.
sourceStringSource domain or source value.
targetStringTarget domain or target value.
order_typeStringAllowed values: asc, desc.
Default: desc.
order_fieldStringAllowed values: keywords_count, traffic_sum, traffic_percent, price_sum.
Default: keywords_count.
filter[domain_url]StringFilter by domain URL.
filter[price_sum][to]NumberUpper bound for price_sum.
filter[price_sum][from]NumberLower bound for price_sum.
filter[traffic_sum][to]IntegerUpper bound for traffic_sum.
filter[traffic_sum][from]IntegerLower bound for traffic_sum.
filter[keywords_count][to]IntegerUpper bound for keywords_count.
filter[keywords_count][from]IntegerLower bound for keywords_count.
filter[domain_traffic_percent][to]NumberUpper bound for traffic_percent filtering.
filter[domain_traffic_percent][from]NumberLower 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.

ParameterTypeDescription
urlStringPage URL.
titleStringPage title.
intentsObjectIntent breakdown object containing C, I, L, N, and T.
intents.CObjectIntent C object.
intents.C.countIntegerCount for intent C.
intents.C.trafficIntegerTraffic for intent C.
intents.C.percentsNumberPercentage for intent C (float).
intents.IObjectIntent I object.
intents.I.countIntegerCount for intent I.
intents.I.trafficIntegerTraffic for intent I.
intents.I.percentsNumberPercentage for intent I (float).
intents.LObjectIntent L object.
intents.L.countIntegerCount for intent L.
intents.L.trafficIntegerTraffic for intent L.
intents.L.percentsNumberPercentage for intent L (float).
intents.NObjectIntent N object.
intents.N.countIntegerCount for intent N.
intents.N.trafficIntegerTraffic for intent N.
intents.N.percentsNumberPercentage for intent N (float).
intents.TObjectIntent T object.
intents.T.countIntegerCount for intent T.
intents.T.trafficIntegerTraffic for intent T.
intents.T.percentsNumberPercentage for intent T (float).
price_sumNumberTotal price_sum value (float).
traffic_sumIntegerTotal traffic sum.
keywords_countIntegerTotal keywords count.
traffic_percentNumberTotal traffic percent (float).
▣ ENDPOINT 08 / 10
GET
Compare Domain Keywords
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/keywords/comparison

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
urlStringTarget URL to analyze.
colsStringSelects which columns to return.
diffENUMDifference mode. Allowed values: 0, 1. Default: 0.
pageIntegerPage number. Default: 1.
typeENUMResult type. Allowed values: organic, adv. Default: organic.
limitIntegerMaximum number of items to return. Default: 100. Minimum: 1. Maximum: 1000.
domainStringDomain to analyze.
sourceStringSource domain or URL.
compareStringDomain or URL to compare against the source.
order_typeENUMSort direction. Allowed values: asc, desc. Default: asc.
order_fieldENUMSort field. Allowed values: keyword, volume, cpc, competition, difficulty, position. Default: keyword.
filter[cpc][to]NumberMaximum CPC filter value.
filter[intents]StringFilter by intent values.
filter[keyword]StringFilter by keyword text.
filter[cpc][from]NumberMinimum CPC filter value.
filter[volume][to]IntegerMaximum volume filter value.
filter[volume][from]IntegerMinimum volume filter value.
filter[serp_features]StringFilter by SERP features.
filter[difficulty][to]IntegerMaximum difficulty filter value. Minimum: 0. Maximum: 100.
filter[competition][to]NumberMaximum competition filter value. Minimum: 0. Maximum: 1.
filter[difficulty][from]IntegerMinimum difficulty filter value. Minimum: 0. Maximum: 100.
filter[competition][from]NumberMinimum competition filter value. Minimum: 0. Maximum: 1.
filter[multi_keyword_excluded]StringExcludes keywords matching the provided value.
filter[multi_keyword_included]StringIncludes 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.

AttributeTypeDescription
cpcNumberCost-per-click value as a float.
volumeIntegerKeyword volume.
keywordStringKeyword text.
positionIntegerKeyword position; nullable in the schema.
difficultyIntegerKeyword difficulty.
competitionNumberCompetition value as a float.
▣ ENDPOINT 09 / 10
GET
Get Domain Historical Trends
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/history

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
urlStringDomain URL to analyze.
typeENUMTraffic type.
- organic
- adv
Default: organic
domainStringDomain name to analyze.
sourceStringSource identifier used by the service.
with_subdomainsENUMWhether to include subdomains.
- 0
- 1
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.

ParameterTypeDescription
yearIntegerYear of the history record.
monthIntegerMonth of the history record.
top1_2IntegerCount for the top1_2 bucket.
top1_5IntegerCount for the top1_5 bucket.
top3_5IntegerCount for the top3_5 bucket.
top6_8IntegerCount for the top6_8 bucket.
top6_10IntegerCount for the top6_10 bucket.
top9_11IntegerCount for the top9_11 bucket.
top11_20IntegerCount for the top11_20 bucket.
top21_50IntegerCount for the top21_50 bucket.
price_sumNumberFloating-point sum value for the record.
top51_100IntegerCount for the top51_100 bucket.
traffic_sumIntegerTotal traffic for the month.
keywords_countIntegerTotal keyword count for the month.
▣ ENDPOINT 10 / 10
GET
Get Domain Subdomains
https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/subdomains

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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)

AttributeTypeDescription
typeENUMAllowed values: organic, adv.
Default: organic.
limitIntegerMaximum number of results to return.
Default: 1000.
scopeENUMAllowed values: base_domain, domain.
offsetIntegerResult offset for pagination.
sourceStringSource identifier used to filter the subdomain data.
targetStringTarget domain to analyze.
order_typeENUMAllowed values: asc, desc.
Default: desc.
order_fieldENUMAllowed values: keywords_count, traffic_sum, traffic_percent, price_sum.
Default: keywords_count.
filter[domain_url]StringFilters results by domain URL.
filter[price_sum][to]NumberUpper bound for price_sum.
filter[price_sum][from]NumberLower bound for price_sum.
filter[traffic_sum][to]IntegerUpper bound for traffic_sum.
filter[traffic_sum][from]IntegerLower bound for traffic_sum.
filter[keywords_count][to]IntegerUpper bound for keywords_count.
filter[keywords_count][from]IntegerLower bound for keywords_count.
filter[domain_traffic_percent][to]NumberUpper bound for traffic_percent.
filter[domain_traffic_percent][from]NumberLower 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.

AttributeTypeDescription
urlStringSubdomain URL.
price_sumNumberPrice sum as a floating-point value.
traffic_sumIntegerTraffic sum.
keywords_countIntegerNumber of keywords.
traffic_percentNumberTraffic percentage as a floating-point value.
▣ 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.