Semrush Keyword Overview Scraper — Volume, KD, CPC & Intent
Pricing
from $17.46 / 1,000 keyword metrics results
Semrush Keyword Overview Scraper — Volume, KD, CPC & Intent
Extract Semrush keyword metrics. Get volume, CPC, Keyword Difficulty, intent, trends, and ideas or SERP results. Use keywords and a country database; no Semrush login or API key. Pricing: $0.018 per successful keyword-result event.
Pricing
from $17.46 / 1,000 keyword metrics results
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
112
Total users
15
Monthly active users
a day ago
Last modified
Features
Share
Semrush Keyword Scraper for Volume and KD
Extract Semrush Keyword Overview records for keyword lists, including country-specific metrics and optional organic SERP results. No Semrush subscription or API key is required; on the Free plan, charges are $0.018 per successful keyword-result event and $0.0045 per apify-actor-start event.
- Use volume, KD, CPC, and intent to prioritize keyword lists.
- Compare international demand through structured per-country
global_volumesdata. - Analyze 12-month trends to spot seasonality before planning content.
- Inspect organic SERP positions, domains, URLs, and features when enabled.
What you get
The Actor returns one record for each processed, unique keyword. Keywords are trimmed and deduplicated case-insensitively before processing. When the source provides no numeric metric, the field is null.
| Field | Type | Description |
|---|---|---|
keyword | string | Input keyword phrase. |
database | string | Selected Semrush country database, such as us, uk, or de. |
volume | number or null | Monthly search volume; null when unavailable. |
cpc | number or null | CPC in USD; null when unavailable. |
competition_level | number or null | Advertising competition level from 0 to 1; null when unavailable. |
keyword_difficulty | number or null | Keyword Difficulty score from 0 to 100; null when unavailable. |
results_count | number or null | Number of search results; null when unavailable. |
referring_domains_median | number or null | Median referring domains; null when unavailable. |
intents | array of integers | Search intent codes; empty when there is no usable match. |
intent_labels | array of strings | Commercial, informational, navigational, or transactional; empty when there is no usable match. |
serp_features | array | Rich SERP features; empty when unavailable. |
trend | array | Twelve monthly search-volume points; empty when unavailable. |
global_volumes | array of objects | Populated country entries, sorted by volume descending. Each includes database, volume, cpc, competition_level, keyword_difficulty, and results_count. |
global_country_count | integer | Number of populated global_volumes entries; 0 when empty. |
ideas | array of objects | Related ideas with phrase, volume, and keyword_difficulty; empty when disabled, metrics are unavailable, or lookup fails. |
serp | array of objects | Organic results with position, domain, url, and serp_features; empty when disabled, metrics are unavailable, or lookup fails. |
checked_at | ISO 8601 string | Processing timestamp. |
error | string or null | Failed-lookup error text; null unless an error occurs. Failed lookups are not charged as keyword-result events. |
serp_id, serp_updated_at | string; integer | SERP metadata, present only on rows where Semrush returned a metric match; an empty string or 0 if the source omits them. |
Sample output
Successful lookup for one keyword (database us). global_volumes is shortened here to 2 of its 120 entries; ideas and serp are empty because includeIdeas and includeSerp were off.
{"keyword": "seo tools", "database": "us","volume": 1500000, "cpc": 10.04, "competition_level": 0.02,"keyword_difficulty": 95, "results_count": 1590000,"referring_domains_median": 595,"intents": [0, 2], "intent_labels": ["commercial", "navigational"],"serp_features": [6, 7, 9, 21, 28, 41, 50],"trend": [0, 0, 0, 1, 0, 0, 16, 66, 100, 54, 0, 0],"global_volumes": [{"database": "us", "volume": 1500000, "cpc": 10.04, "competition_level": 0.02, "keyword_difficulty": 95, "results_count": 1590000},{"database": "de", "volume": 49500, "cpc": null, "competition_level": null, "keyword_difficulty": null, "results_count": null}],"global_country_count": 120, "ideas": [], "serp": [], "error": null,"checked_at": "2026-11-08T06:23:29.447148+00:00","serp_id": "b-f-97-1006-5261202010094607972", "serp_updated_at": 1791273008}
Pricing
The Actor uses pay-per-event pricing. The listed charge events are:
keyword-result: one successful keyword with Semrush metrics. Failed lookups are not charged.apify-actor-start: charged once per GB of run memory, with a minimum of one event.
Organic SERP and keyword ideas are included in the same successful keyword-result event and create no separate listed charge events.
| Plan | apify-actor-start | keyword-result |
|---|---|---|
| Free | $0.0045 per event on Free | $0.018 per event on Free |
| Bronze | $0.004455 per event on Bronze | $0.01782 per event on Bronze |
| Silver | $0.00441 per event on Silver | $0.01764 per event on Silver |
| Gold | $0.004365 per event on Gold | $0.01746 per event on Gold |
| Platinum | $0.00432 per event on Platinum | $0.01728 per event on Platinum |
| Diamond | $0.004275 per event on Diamond | $0.0171 per event on Diamond |
On Free, 1,000 keyword-result events cost $18 and 10,000 cost $180; 1,000 apify-actor-start events cost $4.50 and 10,000 cost $45.
100 x $0.018 = $1.80 on Free for 100 successful keyword results; adding one start event at $0.0045 on Free gives $1.8045.
The Apify Free plan includes $5 of monthly platform usage credit. The $5 credit covers 277 keyword-result events on Free.
You pay only for the events listed above. This Actor does not use the Pay per event + usage option, so compute, proxy traffic, and storage are not billed separately.
How to use
- Prepare an array of keyword phrases in
keywords. - Choose the two-letter Semrush country database in
database. - Enable
includeIdeasorincludeSerpwhen needed. - Set
maxIdeasandmaxItemsto cap ideas or processed keywords. - Keep the default Apify
RESIDENTIALproxy configuration, or provide the accepted Apify residential proxy object. - Run the Actor and inspect one output record per processed keyword, including any
error. - Repeat the run through Apify Schedules monthly as a starting point for recurring keyword research.
{"keywords": ["seo tools", "keyword research"],"database": "us","includeIdeas": true,"maxIdeas": 10,"includeSerp": true,"maxItems": 2,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
keywords | Required array of keyword phrases to look up. | Required |
database | Selects the two-letter Semrush country database for country-specific metrics and SERP data. | us |
includeIdeas | Requests related ideas when the core lookup returns metrics. | false |
maxIdeas | Caps related ideas per keyword. | 30 |
includeSerp | Requests organic SERP rows when the core lookup returns metrics. | false |
maxItems | Caps processed keywords; 0 means no optional cap. | 0 |
proxyConfiguration | Configures the Apify proxy used to reach the target. | Apify RESIDENTIAL |
disableUsageStats | Turns off the run summary described in Usage statistics when true. | false |
Limits and edge cases
| Condition | What the buyer sees | What to do |
|---|---|---|
keywords is missing or produces no usable keyword values | The Actor stops before lookups and creates no keyword-result events. | Provide a non-empty keyword array. |
| More than 5,000 unique keywords are supplied | Processing is capped at the first 5,000 unique keywords. | Split the list across runs. |
maxItems is greater than 0 and smaller than the keyword list | Only the first maxItems keywords are processed. | Increase maxItems or use 0. |
| A keyword is unknown to Semrush or has no usable core match | volume is null; other metrics can be null and arrays empty. | Check the phrase and database. |
| A keyword lookup raises a processing error | The row is pushed with an error beginning with kw_failed: and is not charged as a keyword-result. | Review the error and rerun the keyword. |
Semrush access is exhausted (auth_exhausted) | The Actor uses a shared pool of free Semrush sessions with a limited query budget. After the first auth_exhausted: row the run stops; later keywords are not processed and no keyword-result is charged. | Rerun the remaining keywords later or in a smaller batch. |
includeIdeas or includeSerp is enabled | Each adds a lookup per keyword, so the session budget is used up faster and fewer keywords finish before a stop. | Enable them only for keywords you need, or use a smaller batch. |
includeIdeas is enabled but the ideas lookup fails | Core metrics can still be returned; ideas remains empty. | Use the core metrics or rerun with ideas enabled. |
includeSerp is enabled but the SERP lookup fails | Core metrics can still be returned; serp remains empty. | Use the core metrics or rerun with SERP enabled. |
maxIdeas is set to 0 | The runtime uses the default cap of 30. | Use a positive value for a smaller cap. |
| No Apify proxy is available | The Actor stops before lookups and creates no keyword-result events. | Keep the default Apify RESIDENTIAL configuration available. |
| The run reaches its deadline with too little time for another keyword | The Actor stops before starting another keyword; delivered rows remain in the dataset. | Use a smaller batch or split the list. |
FAQ
How much does it cost to scrape Semrush keyword data?
See Pricing for the plan-labelled event prices and worked example.
Why is a keyword result empty?
A keyword can return null metrics and empty arrays when the core lookup has no usable match. A failed lookup can also include error. Check the phrase and database; failed lookups are not charged as keyword-result events.
What should I check if the Actor is not working?
Check that keywords contains a non-empty array, database is a two-letter country code, and the Apify RESIDENTIAL proxy is available. If the output contains auth_exhausted, the shared session budget is spent: rerun the unprocessed keywords later in a smaller batch.
Is using this public data legal or allowed?
The Actor retrieves Semrush Keyword Overview data through the Semrush service and returns it in the dataset. Whether a use is legal or allowed depends on the use case, applicable law, and the source's terms; review those requirements before using the output.
Related actors
- Ahrefs Keyword Difficulty Checker — KD Score & SERP — related for keyword-difficulty and SERP data.
- Google SERP Scraper — AI Mode, Shopping, Local — related for structured search-result data.
Usage statistics
This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.
A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.
To opt out, set disableUsageStats to true in the input. Nothing is sent then.