Ubersuggest Scraper avatar

Ubersuggest Scraper

Pricing

from $0.80 / 1,000 seo data

Go to Apify Store
Ubersuggest Scraper

Ubersuggest Scraper

Collect public Ubersuggest SEO data from domains, URLs, and keyword seeds. Export overviews, ranking keywords, top pages, backlinks, keyword metrics, suggestions, and SERP URLs.

Pricing

from $0.80 / 1,000 seo data

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

29

Total users

4

Monthly active users

10 days ago

Last modified

Share

🔎 Ubersuggest SEO research for domains and keywords

SEO teams, agencies, content planners, and developers can collect public SEO data from Ubersuggest for domains, full URLs, and keyword seeds. The Actor saves structured dataset rows for domain overviews, ranking keywords, top pages, backlinks, keyword metrics, keyword suggestions, and SERP results, so you can compare sites and plan content from one dataset.

Add one or more website targets, keyword seeds, or both. Choose the rows to save, set a country and language, and use optional per-surface limits. Source metrics that are not available stay null when the schema allows it.

📊 Ubersuggest SEO rows

Each saved row has a rowType value that identifies its source surface. Website rows include matchedInput, domain, country, and language. Keyword rows include matchedInput, seedKeyword, country, and language. Optional source metrics can be null when Ubersuggest does not return them.

Available row types

Row typeWhat it contains
domain_overviewAuthority, referring domains, backlinks, organic and paid traffic and keyword counts, ranking buckets, traffic history, and country traffic.
domain_keywordA keyword the submitted domain or URL ranks for, with position, landing URL, volume, CPC, currency, and SEO difficulty.
top_pageA ranked page URL with title, estimated traffic, backlinks, referring domains, social shares, and rank.
backlinks_overviewOne backlink summary for the submitted domain or URL.
backlinkOne backlink source with linked URL, anchor, title, authority measures, spam score, dates, nofollow status, and rank.
keyword_metricMetrics for a submitted seed, including trend, global volume, device share, and source freshness when available.
keyword_suggestionOne related keyword idea with volume, CPC, competition, difficulty, intent, and freshness when available.
serp_resultOne URL-backed SERP result for a submitted keyword seed.

🚀 Run a public Ubersuggest SEO check

  1. Add one or more values to Domains or URLs, Keyword seeds, or both.
  2. Keep Country as us and Language as en, or choose the locale you need.
  3. Choose the domain and keyword row types to save.
  4. Run the Actor and open the default dataset.

Limits are maximums for each submitted domain, URL, or keyword seed. Leave any limit empty to return all available rows until the source is exhausted. A source can still return fewer rows when it has fewer matching rows or does not expose a section.

⚙️ Input

Use domains or URLs for website rows, keyword seeds for keyword rows, or both. The country and language apply to each source request.

Input fields

FieldTypeWhat it does
domainsOrUrlsarray of stringsAdds domains or full URLs for domain overview, ranking keyword, top page, backlink overview, and backlink rows.
keywordsarray of stringsAdds seed keywords for keyword metrics, keyword suggestions, and optional SERP rows.
countrystringSets the two-letter country code for locale-specific data. The default is us.
languagestringSets the two-letter language code for locale-specific data. The default is en.
includeOverviewbooleanSaves domain overview rows with authority, backlink totals, traffic, ranking buckets, history, and country traffic when available.
includeDomainKeywordsbooleanSaves ranking-keyword rows with position, landing URL, volume, CPC, currency, and SEO difficulty when available.
maxDomainKeywordsintegerSets an optional positive limit for ranking-keyword rows per domain or URL. Leave it empty to return all available rows until the source is exhausted.
includeTopPagesbooleanSaves ranked page rows with URLs, titles, traffic, backlinks, referring domains, and social shares when available.
maxTopPagesintegerSets an optional positive limit for top-page rows per domain or URL. Leave it empty to return all available rows until the source is exhausted.
includeBacklinksOverviewbooleanSaves one backlink overview row per domain with authority, referring domains, backlink totals, and follow or nofollow counts when available.
includeBacklinksbooleanSaves individual backlink rows with source and target URLs, anchors, authority, spam score, dates, and nofollow status when available.
maxBacklinksintegerSets an optional positive limit for backlink rows per domain or URL. Leave it empty to return all available rows until the source is exhausted.
includeKeywordSuggestionsbooleanSaves related keyword ideas with volume, CPC, competition, difficulty, and intent when available.
maxKeywordSuggestionsintegerSets an optional positive limit for suggestion rows per seed. Leave it empty to return all available rows until the source is exhausted.
includeSerpbooleanSaves URL-backed SERP rows with position, result type, estimated clicks, authority, and social shares when available.
maxSerpResultsintegerSets an optional positive limit for SERP rows per seed. Leave it empty to return all available rows until the source is exhausted.

The include fields control which row types are saved. A limit is a maximum, not a promise that the source will return that many rows.

Example input

This is copied from the public input of a successful current-beta default-input run.

{
"domainsOrUrls": [],
"keywords": [
"automation"
],
"country": "us",
"language": "en",
"includeOverview": true,
"includeTopPages": true,
"includeBacklinksOverview": true,
"includeBacklinks": false,
"includeKeywordSuggestions": true,
"maxTopPages": 10,
"maxBacklinks": 25,
"maxKeywordSuggestions": 25
}

🧾 Output

The results field links to the default dataset. Each saved row has a rowType value, and the tables below describe every row shape in the public dataset schema. A source metric can be null when Ubersuggest does not return it.

Dataset link

FieldTypeWhat it does
resultsstringLinks to the default dataset items for the run.

Domain overview

FieldTypeWhat it does
rowTypestringAlways domain_overview.
matchedInputstringSubmitted domain or URL that produced the row.
domainstringDomain described by the metrics.
countrystringCountry code used for the request.
languagestringLanguage code used for the request.
mozDomainAuthoritynumber or nullMOZ domain authority when returned.
referringDomainsinteger or nullNumber of referring domains.
backlinksinteger or nullTotal backlinks.
followBacklinksinteger or nullFollow backlinks.
nofollowBacklinksinteger or nullNofollow backlinks.
organicKeywordsinteger or nullOrganic keyword count.
organicTrafficinteger or nullEstimated organic traffic.
paidKeywordsinteger or nullPaid keyword count.
paidTrafficinteger or nullEstimated paid traffic.
keywordsInTop1To3integer or nullOrganic keywords in positions 1 through 3.
keywordsInTop4To10integer or nullOrganic keywords in positions 4 through 10.
keywordsInTop11To50integer or nullOrganic keywords in positions 11 through 50.
keywordsInTop51To100integer or nullOrganic keywords in positions 51 through 100.
trafficHistoryarray of objectsMonthly traffic and ranking-bucket history.
trafficHistory[].datestringMonth for the history point.
trafficHistory[].organicTrafficinteger or nullEstimated organic traffic for that month.
trafficHistory[].organicKeywordsinteger or nullOrganic keyword count for that month.
trafficHistory[].keywordsInTop1To3integer or nullKeywords in positions 1 through 3 for that month.
trafficHistory[].keywordsInTop4To10integer or nullKeywords in positions 4 through 10 for that month.
trafficHistory[].keywordsInTop11To50integer or nullKeywords in positions 11 through 50 for that month.
trafficHistory[].keywordsInTop51To100integer or nullKeywords in positions 51 through 100 for that month.
topCountryTrafficarray of objectsCountry traffic breakdown.
topCountryTraffic[].countryCodestringCountry code for the traffic entry.
topCountryTraffic[].countrystring or nullCountry name when returned.
topCountryTraffic[].trafficinteger or nullEstimated traffic from that country.
topCountryTraffic[].trafficSharenumber or nullShare of traffic from that country.

This genuine row is from a successful current-beta domain run.

{
"rowType": "domain_overview",
"matchedInput": "iwantjewels.com",
"domain": "iwantjewels.com",
"country": "us",
"language": "en",
"mozDomainAuthority": 28,
"referringDomains": 67,
"backlinks": 109,
"followBacklinks": 103,
"nofollowBacklinks": 6,
"organicKeywords": 1,
"organicTraffic": 0,
"paidKeywords": 0,
"paidTraffic": 0,
"keywordsInTop1To3": 0,
"keywordsInTop4To10": 0,
"keywordsInTop11To50": 1,
"keywordsInTop51To100": 0,
"trafficHistory": [
{
"date": "2025-12-01",
"organicTraffic": 0,
"organicKeywords": 1,
"keywordsInTop1To3": 0,
"keywordsInTop4To10": 0,
"keywordsInTop11To50": 0,
"keywordsInTop51To100": 1
},
{
"date": "2026-04-01",
"organicTraffic": 0,
"organicKeywords": 1,
"keywordsInTop1To3": 0,
"keywordsInTop4To10": 0,
"keywordsInTop11To50": 1,
"keywordsInTop51To100": 0
},
{
"date": "2026-05-01",
"organicTraffic": 0,
"organicKeywords": 1,
"keywordsInTop1To3": 0,
"keywordsInTop4To10": 0,
"keywordsInTop11To50": 1,
"keywordsInTop51To100": 0
}
],
"topCountryTraffic": [
{
"countryCode": "US",
"country": "United States",
"traffic": 0,
"trafficShare": null
}
]
}

Domain ranking keyword

FieldTypeWhat it does
rowTypestringAlways domain_keyword.
matchedInputstringSubmitted domain or URL that produced the row.
domainstringDomain that ranks for the keyword.
countrystringCountry code used for the request.
languagestringLanguage code used for the request.
rankintegerRow order in the collected ranking-keyword list.
keywordstringKeyword the domain ranks for.
rankingTypestring or nullSource ranking type, such as organic or paid.
positioninteger or nullSearch result position for the keyword.
urlstring or nullRanking landing URL when returned.
volumeinteger or nullKeyword search volume.
cpcnumber or nullKeyword cost per click.
currencystring or nullCurrency code for CPC values.
seoDifficultynumber or nullSEO difficulty score.

This genuine row is from the same successful current-beta domain run.

{
"rowType": "domain_keyword",
"matchedInput": "iwantjewels.com",
"domain": "iwantjewels.com",
"country": "us",
"language": "en",
"rank": 1,
"keyword": "studs or hoops",
"rankingType": "organic",
"position": 45,
"url": "http://iwantjewels.com/resources/earring-style-guides/stud-vs-hoop-earrings",
"volume": 40,
"cpc": 0,
"currency": "USD",
"seoDifficulty": 12
}

Top page

FieldTypeWhat it does
rowTypestringAlways top_page.
matchedInputstringSubmitted domain or URL that produced the row.
domainstringDomain the page belongs to.
countrystringCountry code used for the request.
languagestringLanguage code used for the request.
rankintegerPage rank in the top-pages list.
pageUrlstringTop page URL.
titlestring or nullPage title when returned.
trafficinteger or nullEstimated page traffic.
backlinksinteger or nullBacklinks reported for the page.
referringDomainsinteger or nullReferring domains reported for the page.
facebookSharesinteger or nullFacebook share count when returned.
pinterestSharesinteger or nullPinterest share count when returned.
redditSharesinteger or nullReddit share count when returned.

This genuine row is from the same successful current-beta domain run.

{
"rowType": "top_page",
"matchedInput": "iwantjewels.com",
"domain": "iwantjewels.com",
"country": "us",
"language": "en",
"pageUrl": "http://www.iwantjewels.com/resources/earring-style-guides/stud-vs-hoop-earrings",
"title": "Stud vs Hoop Earrings: Which Is Better?",
"traffic": 1,
"backlinks": 0,
"referringDomains": 0,
"facebookShares": 0,
"pinterestShares": 0,
"redditShares": 0,
"rank": 1
}

Backlink overview

FieldTypeWhat it does
rowTypestringAlways backlinks_overview.
matchedInputstringSubmitted domain or URL that produced the row.
domainstringDomain described by the backlink summary.
countrystringCountry code used for the request.
languagestringLanguage code used for the request.
mozDomainAuthoritynumber or nullMOZ domain authority when returned.
referringDomainsinteger or nullNumber of referring domains.
backlinksinteger or nullTotal backlinks.
followBacklinksinteger or nullFollow backlinks.
nofollowBacklinksinteger or nullNofollow backlinks.
referringDomainsGovEduinteger or nullGovernment or education referring-domain count when returned.

This genuine row is from the same successful current-beta domain run.

{
"rowType": "backlinks_overview",
"matchedInput": "iwantjewels.com",
"domain": "iwantjewels.com",
"country": "us",
"language": "en",
"mozDomainAuthority": 9,
"referringDomains": 68,
"backlinks": 339,
"followBacklinks": 0,
"nofollowBacklinks": 6,
"referringDomainsGovEdu": 0
}

Backlink

FieldTypeWhat it does
rowTypestringAlways backlink.
matchedInputstringSubmitted domain or URL that produced the row.
domainstringDomain whose backlink list contains the row.
countrystringCountry code used for the request.
languagestringLanguage code used for the request.
rankintegerRow order in the collected backlink list.
urlFromstringPage linking to the target URL.
urlTostring or nullLinked URL on the submitted domain.
anchorstring or nullAnchor text shown for the backlink.
titlestring or nullTitle of the linking page when returned.
mozDomainAuthoritynumber or nullAuthority value for the linking domain.
mozPageAuthoritynumber or nullAuthority value for the linking page.
mozSpamScorenumber or nullSpam score for the linking page or domain.
firstSeenstring or nullDate Ubersuggest first saw the backlink.
lastVisitedstring or nullDate Ubersuggest last visited the backlink.
dateLoststring or nullDate the backlink was lost, or null for an active link.
noFollowboolean or nullWhether the backlink is marked nofollow when returned.

This genuine row is from the same successful current-beta domain run.

{
"rowType": "backlink",
"matchedInput": "iwantjewels.com",
"domain": "iwantjewels.com",
"country": "us",
"language": "en",
"urlFrom": "https://cvillico.com/all/1490/1.html",
"urlTo": "https://iwantjewels.com/",
"anchor": "high quality dofollow backlinks da 50 pa 40 premium pbn network service iwantjewels.com rank first page google fast seo link building buy backlinks online cheap",
"title": "🏆🏆Boost your Google rankings with Premium PBN & Link Building🏆🏆",
"mozDomainAuthority": 63,
"mozPageAuthority": 22,
"mozSpamScore": 7,
"noFollow": false,
"firstSeen": "2026-09-02",
"lastVisited": "2026-09-02",
"dateLost": null,
"rank": 1
}

Keyword metric

FieldTypeWhat it does
rowTypestringAlways keyword_metric.
matchedInputstringSubmitted keyword seed that produced the row.
seedKeywordstringSubmitted keyword seed.
keywordstringKeyword described by the metrics.
countrystringCountry code used for the request.
languagestringLanguage code used for the request.
volumeinteger or nullKeyword search volume.
cpcnumber or nullKeyword cost per click.
currencystring or nullCurrency code for CPC values.
competitionnumber or nullPaid search competition value.
seoDifficultynumber or nullSEO difficulty score.
paidDifficultynumber or nullPaid difficulty score.
searchIntentarray of strings or nullSearch intent labels from the source.
searchIntent[]stringOne source-provided search intent label.
monthlyTrendobject or nullMonthly search volume keyed by source month.
monthlyTrend.<YYYYMM>integerSearch volume for one source month.
globalVolumeinteger or nullGlobal keyword search volume.
globalVolumeBreakdownobject or nullGlobal volume by source locale key plus other and total.
globalVolumeBreakdown.<locale>integerVolume for one source locale key.
globalVolumeBreakdown.otherintegerVolume grouped into other locales.
globalVolumeBreakdown.totalintegerTotal global volume in the breakdown.
desktopSharenumber or nullDesktop traffic share for the keyword.
mobileSharenumber or nullMobile traffic share for the keyword.
updatedAtstring or nullSource freshness timestamp.

This genuine row is from a successful current-beta keyword run.

{
"rowType": "keyword_metric",
"matchedInput": "seo",
"seedKeyword": "seo",
"country": "us",
"language": "en",
"keyword": "seo",
"volume": 110000,
"cpc": 30.09,
"currency": "USD",
"competition": 0.31,
"seoDifficulty": 95,
"paidDifficulty": 31,
"searchIntent": [
"1"
],
"monthlyTrend": {
"202604": 74000,
"202605": 60500,
"202606": 60500,
"202607": 110000
},
"globalVolume": 673000,
"globalVolumeBreakdown": {
"en:2076": 27100,
"en:2586": 40500,
"en:2392": 40500,
"hi:2356": 90500,
"en:2840": 110000,
"other": 364400,
"total": 673000
},
"desktopShare": 0.7687747035573123,
"mobileShare": 0.23122529644268774,
"updatedAt": "2026-09-29T10:49:20.000Z"
}

Keyword suggestion

FieldTypeWhat it does
rowTypestringAlways keyword_suggestion.
matchedInputstringSubmitted keyword seed that produced the row.
seedKeywordstringSubmitted keyword seed.
keywordstringSuggested keyword returned by Ubersuggest.
countrystringCountry code used for the request.
languagestringLanguage code used for the request.
rankintegerSuggestion rank in the collected list.
volumeinteger or nullKeyword search volume.
cpcnumber or nullKeyword cost per click.
currencystring or nullCurrency code for CPC values.
competitionnumber or nullPaid search competition value.
seoDifficultynumber or nullSEO difficulty score.
paidDifficultynumber or nullPaid difficulty score.
searchIntentarray of strings or nullSearch intent labels from the source.
searchIntent[]stringOne source-provided search intent label.
updatedAtstring or nullSource freshness timestamp.

This genuine row is from the same successful current-beta keyword run.

{
"rowType": "keyword_suggestion",
"matchedInput": "seo",
"seedKeyword": "seo",
"country": "us",
"language": "en",
"keyword": "seo",
"rank": 1,
"volume": 110000,
"cpc": 30.09,
"currency": "USD",
"competition": 0.31,
"seoDifficulty": 19,
"paidDifficulty": 31,
"searchIntent": [
"1"
],
"updatedAt": "2026-09-27T00:13:55.000Z"
}

SERP result

FieldTypeWhat it does
rowTypestringAlways serp_result.
matchedInputstringSubmitted keyword seed that produced the row.
seedKeywordstringSubmitted keyword seed.
countrystringCountry code used for the request.
languagestringLanguage code used for the request.
positionintegerSERP position returned by Ubersuggest.
resultTypestring or nullSERP result type, such as organic or AI overview, when returned.
urlstringRanking result URL.
titlestring or nullSERP result title when returned.
domainstring or nullDomain of the result URL.
estimatedClicksinteger or nullEstimated monthly clicks for the result.
domainAuthoritynumber or nullDomain authority value for the result.
facebookSharesinteger or nullFacebook share count when returned.
pinterestSharesinteger or nullPinterest share count when returned.
redditSharesinteger or nullReddit share count when returned.

This genuine row is from the same successful current-beta keyword run.

{
"rowType": "serp_result",
"matchedInput": "seo",
"seedKeyword": "seo",
"country": "us",
"language": "en",
"position": 2,
"resultType": "organic",
"url": "http://developers.google.com/search/docs/fundamentals/seo-starter-guide",
"title": "Search Engine Optimization (SEO) Starter Guide",
"domain": "developers.google.com",
"estimatedClicks": 19394,
"domainAuthority": 95,
"facebookShares": 9,
"pinterestShares": 4,
"redditShares": null
}

💳 Pricing

This Actor uses pay-per-event pricing. A charge applies to each saved SEO entry, including a domain overview, ranking keyword, top page, backlink overview, backlink, keyword metric, keyword suggestion, or SERP result.

Use the result toggles and limits to control which rows the run can save. Ubersuggest values can vary by country, language, collection time, and source availability. A source may return fewer rows than a limit, and optional metrics can be null when the source does not provide them. A mixed run can return partial sections if Ubersuggest temporarily limits a report.

Review high-risk SEO or business decisions against the source data and your own judgment.

🔌 Integrations

Use the default dataset in the Apify Console or read it through the Apify API. Filter the saved row types, export the dataset as JSON, CSV, Excel, XML, RSS, or HTML, and send selected data to your SEO workflow.

This workflow video shows an Apify integration path for using Actor data in a larger process. For repeat monitoring, schedule the same domain or keyword inputs and compare exported datasets over time. Values can change by market, language, source availability, and collection time.

❓ FAQ

Why can an output field be null?

Some source metrics are optional. When Ubersuggest does not return one, the Actor keeps the field as null when the output shape allows it instead of inventing a value.

Why did a target return fewer rows than my limit?

A limit is a maximum, not a promise that every target has that many available rows. Narrow keywords, low-visibility domains, source availability, or a temporarily limited section can produce fewer rows.

Which inputs produce keyword rows?

Add one or more keywords to get keyword metric rows. Turn on keyword suggestions for suggestion rows, and turn on includeSerp for URL-backed SERP rows.

Why are some SERP results missing?

The Actor saves SERP rows only when the source provides a real result URL. Source placeholders without a result page are skipped.

Can I submit domains and keyword seeds together?

Yes. Add values to both domainsOrUrls and keywords. The Actor can save the selected website and keyword row types in the same dataset.

Can I choose a country and language?

Yes. Use two-letter Country and Language values, such as us and en, to request locale-specific Ubersuggest data.

Does this Actor access private Ubersuggest projects or raw API responses?

No. It collects public Ubersuggest SEO data and returns structured rows. It does not access private projects, saved dashboards, rank tracking campaigns, site audit reports, logged-in reports, or raw upstream payloads.

Do I need a Ubersuggest account?

No. The Actor is designed to access public results without asking you for Ubersuggest credentials, cookies, an API key, or a paid Ubersuggest account.

Can I export the data?

Yes. You can export the Apify dataset as JSON, CSV, Excel, XML, RSS, or HTML, or read it through the Apify API.

📝 Changelog

v0.1

  • Added ranking keywords, keyword metrics, SERP results, richer domain overview data, and lower pay-per-result pricing.

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré