Semrush Alternative — SEO Keyword & SERP Data
Pricing
from $50.00 / 1,000 normalized seo records
Semrush Alternative — SEO Keyword & SERP Data
Run bounded DataForSEO reports for domain organic keywords, Google SERPs, and keyword difficulty with your own provider credentials.
Pricing
from $50.00 / 1,000 normalized seo records
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Semrush Alternative — SEO Keyword and SERP Scraper
This private Actor uses DataForSEO as the backend for bounded SEO research workflows. It returns one normalized dataset record per domain organic keyword, Google organic SERP result, or keyword-overview row, with the submitted query, DataForSEO location and language codes, source, provider task identifier, and collection time.
Best fit and focused standalone workflow
Choose this Actor when you need a DataForSEO-backed alternative for domain keyword research, Google SERP collection, or keyword-difficulty analysis in an Apify workflow. It works as a focused standalone workflow for teams that export source-backed SEO rows into a dashboard, content brief, or monitoring system.
After selecting keywords, continue with a dedicated rank-tracking workflow for recurring target-domain measurements. This Actor focuses on research snapshots and preserves the source and provider context needed before downstream analysis.
Workflow: from domain research to a content decision
An agency starts with domain_organic_keywords for a client domain, DataForSEO location code 2840, and language code en. The run returns keyword, ranking position, volume, CPC, ranking URL, estimated traffic metrics, and keyword difficulty where the provider returns them. Next, the strategist exports the rows, prioritizes terms by position and volume, and feeds the focused list into a content brief or scheduled rank-monitoring workflow.
Quick start and input
Provide the secret dataforSeoLogin and dataforSeoPassword fields from the DataForSEO API access page. They are used only in the provider authorization header and never appear in the dataset, OUTPUT, RUN_SUMMARY, or status messages. DataForSEO usage is billed on the credential owner's provider account.
{"dataforSeoLogin": "YOUR_DATAFORSEO_LOGIN","dataforSeoPassword": "YOUR_DATAFORSEO_PASSWORD","mode": "domain_organic_keywords","domains": ["example.com"],"locationCode": 2840,"languageCode": "en","maxResults": 10}
keyword_serp accepts keywords and returns Google organic result rows. keyword_difficulty accepts keywords and returns the available DataForSEO keyword overview metrics, including difficulty where provided. The Actor processes at most 20 unique inputs and writes at most 20 billable records per run.
Output
Each dataset item is a stable record. Fields that a selected DataForSEO report does not provide are null.
| Field | Meaning |
|---|---|
recordType | Selected research report. |
query | Submitted domain or keyword. |
keyword | Keyword returned by DataForSEO. |
position / url | Observed ranking position and URL when the report provides them. |
searchVolume / keywordDifficulty | DataForSEO keyword metrics when available. |
locationCode / languageCode | Provider market context. |
providerTaskId / requestedAt | Provider provenance and collection time. |
{"recordType": "domain_organic_keywords","query": "example.com","locationCode": 2840,"languageCode": "en","keyword": "technical seo","position": 3,"searchVolume": 1200,"cpc": 2.5,"url": "https://example.com/seo","keywordDifficulty": 67,"source": "DataForSEO","providerTaskId": "01234567-89ab-cdef-0123-456789abcdef","requestedAt": "2026-08-10T12:00:00.000Z"}
Every run writes OUTPUT and RUN_SUMMARY. They expose the terminal outcome, row counts, provider-safe diagnostics, source provenance, and event counts without exposing credentials.
{"outcome": "COMPLETE","message": "Returned 10 DataForSEO record(s); Apify events: 10 ($0.50), plus DataForSEO and platform usage.","itemsPushed": 10,"itemsFailed": 0,"invalidRecords": 0,"chargedEventCounts": { "seo-record": 10 },"warnings": []}
Pricing and provider usage
Pricing uses Pay per event: $0.00005 for an Actor start and $0.05 for each validated DataForSEO record persisted to the dataset. Platform usage is additional; use the live Pricing tab as the current Apify source. DataForSEO request usage remains on the provider credentials supplied for the run.
For example, ten persisted records have $0.50005 in Apify event charges before platform usage, alongside the DataForSEO cost reported by the provider account.
Run through the Apify API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~semrush-api-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"dataforSeoLogin": "YOUR_DATAFORSEO_LOGIN","dataforSeoPassword": "YOUR_DATAFORSEO_PASSWORD","mode": "keyword_difficulty","keywords": ["technical seo"],"locationCode": 2840,"languageCode": "en","maxResults": 10}'
AI-agent prompt
Use the SEO Keyword and SERP Scraper to collect up to 10 US DataForSEO domain organic-keyword rows for
example.com, then read the dataset andOUTPUT. Preserve the source, providerTaskId, and requestedAt fields, keep the $0.05-per-record cost boundary, and report the terminal outcome clearly.
For an AI agent workflow, read the default dataset after the run and use OUTPUT.outcome before downstream work. COMPLETE, PARTIAL, VALID_EMPTY, and INVALID_INPUT distinguish the available report state; RUN_SUMMARY supplies query-level provider provenance and safe diagnostics.
Best-results guidance
Start with one domain or a small keyword list and a specific DataForSEO location and language pair. Confirm the rows are useful in the returned dataset, then schedule the same bounded input for recurring analysis. This keeps the source, provider task, collection time, request scope, and event cost clear for each export.
Builder's note
I designed this revision around DataForSEO's live report contracts so the Actor can return stable automation-ready records without collecting a Semrush account session. My goal is a clear provider boundary: a complete validated row is persisted before its seo-record event is counted.
Responsible use
Use DataForSEO credentials and data that your organization is authorized to access, and apply provider terms of service and applicable laws to downstream processing. This independent Actor is designed for responsible provider-backed collection and is not affiliated with Semrush or DataForSEO.