Keyword Research & SERP Data avatar

Keyword Research & SERP Data

Pricing

$1.00 / 1,000 keyword reports

Go to Apify Store
Keyword Research & SERP Data

Keyword Research & SERP Data

Research keywords, search-result data, related terms, and keyword clusters from publicly accessible search intelligence pages.

Pricing

$1.00 / 1,000 keyword reports

Rating

0.0

(0)

Developer

DataScraperES

DataScraperES

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Turn a list of search terms into five export-ready tables: keyword summaries, organic SERP results, keyword ideas, topic clusters, and paid-SERP history.

When to use this Actor

Use it when you need to:

  • Validate a keyword before creating content or launching a campaign.
  • Find question, phrase-match, transactional, and competitor-related keyword ideas.
  • Review organic and paid search-result data for a market.
  • Build keyword clusters and content-topic plans.
  • Check the URL that ranks for a keyword on a particular domain.

Quick start

  1. Enter one or more terms in Keywords.
  2. Select the Market code where you want to research them.
  3. Pick the report sections you need, or keep the default complete report.
  4. Click Start.
  5. Open the Output tab and choose the table you need. Download it as CSV or Excel, or use its API URL.

Start with a small run of one or two keywords to choose the sections that are useful for your workflow.

Before you start

You do not need an external account or to provide cookies or credentials. Choose the market first: keyword volume, ranking difficulty and results are market-specific. Use the same market code for all terms in one run so the exported tables are comparable.

Input

keywords is the only required field. Add up to 25 terms; duplicate and blank values are removed automatically.

FieldDefaultWhat it does
keywordsRequiredKeywords to research, up to 25 unique terms.
countryCodeESTwo-letter market code, for example ES, US, or UK. Use UK, not GB.
sectionsComplete reportData families to collect. See the section guide below.
relatedLimit5Requested size of each related-keyword or cluster list. The upstream service can return fewer rows.
serpRows30Requested number of organic SERP rows.
topDomainEmptyDomain for the optional top_url report, such as example.com.
delaySeconds0Optional wait between upstream requests. The default is the fastest sequential mode. Increase only if a large run is rate-limited.
continueOnErrortrueContinue later keywords and write an error row if one term cannot be researched.

How to enter each field correctly

  • Keywords: write the actual seed query only. Do not use a URL, a whole sentence, or comma-separated values in one list item. Add separate items instead.
  • Market code: use ES, US, UK, or the two-letter code for the target market. UK is correct for the United Kingdom; GB is not.
  • Domain to check its ranking page: only needed with top_url. Enter example.com, not https://example.com/blog/page.
  • Limits: relatedLimit and serpRows are requested maximums. They do not guarantee that the market has that many available results.
  • Delay: keep 0 for the fastest mode. Retry only affected inputs with a delay of 1 to 3 if the upstream service limits a larger run.

Report sections

SectionIncludesChoose it when you need
serpOrganic SERP and paid-SERP historyRanking and advertising context.
statsKeyword metrics and available search featuresFast validation of a seed keyword.
suggestionsGeneral, keyword, and domain suggestionsMore topic and query ideas.
relatedPhrase match, questions, transactional terms, also-ranks, and ad-overlap termsKeyword expansion and intent research.
clustersRelated keyword groups and cluster totalsContent hubs and topical planning.
top_urlTop URL for the keyword on topDomainComparing a domain's ranking page. Requires topDomain.

For most SEO planning runs, select stats, related, and serp. Add clusters when planning topic hubs. Use suggestions for exploratory ideas that may not include metrics. Select top_url only for a domain-specific comparison.

Ready-to-run examples

Fast keyword check

{
"keywords": ["seo", "abogados madrid"],
"countryCode": "ES",
"sections": ["stats", "suggestions"]
}

Complete keyword research

{
"keywords": ["email marketing software"],
"countryCode": "US",
"sections": ["serp", "stats", "suggestions", "related", "clusters"],
"serpRows": 30,
"relatedLimit": 5,
"delaySeconds": 3
}

Find a domain's ranking URL

{
"keywords": ["keyword research"],
"countryCode": "UK",
"sections": ["serp", "top_url"],
"topDomain": "example.com"
}

Large-list retry after a rate limit

{
"keywords": ["seo auditoria", "seo local", "seo tecnico"],
"countryCode": "ES",
"sections": ["stats", "related"],
"delaySeconds": 2,
"continueOnError": true
}

Results

The Actor creates five dedicated datasets. Each is a clean table with one row per useful entity:

DatasetOne row meansBest for
Keyword summariesA processed seed keywordPrioritizing by volume, difficulty, competition, and result counts.
Organic SERP resultsOne ranking URLCompetitor and ranking-page analysis.
Keyword opportunitiesOne related keyword with metricsPrioritized expansion and content planning.
Keyword clustersOne topic-cluster nodeBuilding topic hubs and content architecture.
Paid SERP historyOne historical ad observationReviewing advertisers and paid-search history.

How to use the tables

  1. Open Keyword opportunities first. Filter recommendation to High priority, then sort opportunityScore from high to low.
  2. Review searchVolume, rankingDifficulty, totalMonthlyClicks, intent, and ideaType before choosing a keyword.
  3. Open Organic SERP results for the chosen seed to see the pages and domains currently competing.
  4. Use Keyword clusters to group selected opportunities into topic hubs. These are top-level topics only, intentionally limited to avoid noisy internal tree data.
  5. Use Paid SERP history only when paid-search context is relevant; historical ads do not represent current ads.

Opportunity score and recommendation

opportunityScore is a transparent prioritization aid, not a traffic forecast. It is calculated as:

search volume × (1 − ranking difficulty / 100)

High priority requires available search volume of at least 1,000 and ranking difficulty of 30 or lower. Review means the idea has some measurable demand but needs human judgment. Low data means the upstream response did not provide enough demand data for reliable automatic prioritization.

The default Keyword summaries dataset contains one object per processed keyword:

{
"keyword": "seo",
"countryCode": "ES",
"ok": true,
"sectionsRequested": ["serp", "stats"],
"liveSearchVolume": 39500,
"rankingDifficulty": 17,
"paidCompetitors": 82,
"organicResultCount": 10,
"keywordIdeaCount": 35,
"clusterCount": 42,
"paidHistoryCount": 12,
"errorCode": null,
"errorMessage": null
}

sectionsWithData identifies which requested parts returned data. ok: true means at least one requested section returned usable data. A row with ok: false contains the reason in errorCode and errorMessage; it is not charged. chargedEvents in the OUTPUT record shows the actual number of confirmed paid events.

The Output tab also provides an OUTPUT summary with input, processed, successful, failed, unprocessed, and charge-limit counts.

Pay per event pricing and cost control

This Actor uses Apify Pay per event pricing. The primary event is keyword-analyzed at $0.001 per keyword report with usable data$1 per 1,000 reports. You only pay for a keyword when at least one requested section returns data. Fully failed keyword rows are free.

Your maximum variable charge is simple to estimate:

unique keywords with usable data × $0.001

There is no fixed start charge. Do not enable apify-default-dataset-item: the Actor writes free error rows. The Actor checks the spending limit before each keyword, confirms the charged event when the summary is stored, and stops safely if the remaining budget cannot cover another report.

Runtime and limits

  • A lightweight stats run generally needs only a few requests per keyword.
  • The complete default report makes roughly 18 upstream requests per keyword. In local validation, the zero-delay mode completed a real full report in about 13 seconds; response time can vary by market and upstream load.
  • Requested SERP and list sizes are targets, not guarantees. The upstream service can return fewer rows or temporarily limit a request.
  • The 25-keyword limit protects against unexpectedly large runs. If a larger run encounters rate limiting, set delaySeconds to 1–3 and retry only the affected terms.

FAQ

Why is a report partial? Some data families can be temporarily unavailable while others succeed. Compare sectionsRequested with sectionsWithData in Keyword summaries to identify what was returned.

Why did the Actor stop before all keywords? Check stoppedByChargeLimit in OUTPUT. Increase the run's spending limit or start a new run with the remaining keywords.

Why are there fewer rows than requested? relatedLimit and serpRows request a maximum. Availability varies by keyword, market, and the upstream response.

What does an error row mean? The keyword could not return usable data. Read errorCode and errorMessage, then retry only that keyword later. Error rows are not charged.

Which dataset should I export? Export Keyword opportunities for content and keyword planning, Organic SERP results for competitor research, Keyword summaries for one-row-per-seed reporting, Keyword clusters for topical architecture, and Paid SERP history for advertising research.

Can I use the output in an automation? Yes. Start with Keyword opportunities: filter recommendation = High priority, then sort by opportunityScore. Use Organic SERP for competitor workflows and Keyword summaries for seed-keyword prioritization.

Important notes

  • This Actor uses publicly accessible search-intelligence pages. It does not request or store third-party accounts, cookies, or credentials.
  • The default mode is intentionally fast. For a larger workload, increase delaySeconds if the upstream service returns incomplete data or rate limits requests.
  • Review the current terms of the upstream service and ensure your intended use complies with them.