Keyword Research & SERP Data
Pricing
$1.00 / 1,000 keyword reports
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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
- Enter one or more terms in Keywords.
- Select the Market code where you want to research them.
- Pick the report sections you need, or keep the default complete report.
- Click Start.
- 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.
| Field | Default | What it does |
|---|---|---|
keywords | Required | Keywords to research, up to 25 unique terms. |
countryCode | ES | Two-letter market code, for example ES, US, or UK. Use UK, not GB. |
sections | Complete report | Data families to collect. See the section guide below. |
relatedLimit | 5 | Requested size of each related-keyword or cluster list. The upstream service can return fewer rows. |
serpRows | 30 | Requested number of organic SERP rows. |
topDomain | Empty | Domain for the optional top_url report, such as example.com. |
delaySeconds | 0 | Optional wait between upstream requests. The default is the fastest sequential mode. Increase only if a large run is rate-limited. |
continueOnError | true | Continue 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.UKis correct for the United Kingdom;GBis not. - Domain to check its ranking page: only needed with
top_url. Enterexample.com, nothttps://example.com/blog/page. - Limits:
relatedLimitandserpRowsare requested maximums. They do not guarantee that the market has that many available results. - Delay: keep
0for the fastest mode. Retry only affected inputs with a delay of1to3if the upstream service limits a larger run.
Report sections
| Section | Includes | Choose it when you need |
|---|---|---|
serp | Organic SERP and paid-SERP history | Ranking and advertising context. |
stats | Keyword metrics and available search features | Fast validation of a seed keyword. |
suggestions | General, keyword, and domain suggestions | More topic and query ideas. |
related | Phrase match, questions, transactional terms, also-ranks, and ad-overlap terms | Keyword expansion and intent research. |
clusters | Related keyword groups and cluster totals | Content hubs and topical planning. |
top_url | Top URL for the keyword on topDomain | Comparing 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:
| Dataset | One row means | Best for |
|---|---|---|
| Keyword summaries | A processed seed keyword | Prioritizing by volume, difficulty, competition, and result counts. |
| Organic SERP results | One ranking URL | Competitor and ranking-page analysis. |
| Keyword opportunities | One related keyword with metrics | Prioritized expansion and content planning. |
| Keyword clusters | One topic-cluster node | Building topic hubs and content architecture. |
| Paid SERP history | One historical ad observation | Reviewing advertisers and paid-search history. |
How to use the tables
- Open Keyword opportunities first. Filter
recommendationtoHigh priority, then sortopportunityScorefrom high to low. - Review
searchVolume,rankingDifficulty,totalMonthlyClicks,intent, andideaTypebefore choosing a keyword. - Open Organic SERP results for the chosen seed to see the pages and domains currently competing.
- Use Keyword clusters to group selected opportunities into topic hubs. These are top-level topics only, intentionally limited to avoid noisy internal tree data.
- 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
statsrun 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
delaySecondsto 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
delaySecondsif 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.
