Seo Keywords Analyzer
Pricing
$2.00 / 1,000 results
Seo Keywords Analyzer
Extract and analyze the most valuable SEO keywords for any domain. This actor provides comprehensive keyword data including search volume, ranking positions, cost-per-click (CPC), ranking difficulty, and detailed traffic metrics.
Pricing
$2.00 / 1,000 results
Rating
0.0
(0)
Developer

Salman Bareesh
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract and analyze the most valuable SEO keywords for any domain. This actor provides comprehensive keyword data including search volume, ranking positions, cost-per-click (CPC), ranking difficulty, and detailed traffic metrics.
Features
- ๐ Comprehensive Keyword Data: Extract detailed information about the most valuable keywords for any domain
- ๐ SEO Metrics: Get search volume, ranking position, SEO clicks, and ranking difficulty
- ๐ฐ Cost Analysis: Includes CPC data (broad, phrase, and exact match) and monthly cost estimates
- ๐ฑ Device Distribution: Desktop vs mobile search percentages
- ๐ Fast Execution: Optimized for quick data extraction (typically completes in 10-20 seconds per domain)
- ๐ Optional Proxy Support: Can use Apify proxy for IP rotation if needed
- ๐ Multi-Domain Support: Process multiple domains in a single run
- ๐ URL Parsing: Automatically extracts domains from full URLs
Input
The actor accepts the following input parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domains | Array | Yes* | - | Array of domains or URLs to analyze (e.g., ["example.com", "https://www.site.com/page"]) |
domain | String | Yes* | - | Single domain/URL to analyze (for backward compatibility) |
useProxy | Boolean | No | false | Enable Apify proxy rotation for requests (recommended for multiple domains) |
*Either domains (array) or domain (string) must be provided.
URL/Domain Handling
The actor automatically extracts clean domain names from various input formats:
- Full URLs:
https://www.example.com/pageโexample.com - URLs with protocols:
http://example.comโexample.com - Domains with www:
www.example.comโexample.com - Clean domains:
example.comโexample.com - URLs with ports:
example.com:8080โexample.com
Example Input - Multiple Domains
{"domains": ["domaincoasters.com","https://www.example.com","http://another-site.com/page"],"useProxy": true}
Example Input - Single Domain (Backward Compatible)
{"domain": "domaincoasters.com","useProxy": false}
Output
The actor extracts and returns detailed keyword data in the following format:
Keyword Fields
| Field | Type | Description |
|---|---|---|
domain | String | The analyzed domain |
keyword | String | The keyword phrase |
termId | Number | Unique identifier for the keyword |
topRankedUrl | String | The highest ranking URL for this keyword |
rank | Number | Current ranking position |
rankChange | Number | Change in ranking position |
searchVolume | Number | Monthly search volume |
rankingDifficulty | Number | Difficulty score for ranking (0-100) |
broadCostPerClick | Number | Broad match CPC in USD |
phraseCostPerClick | Number | Phrase match CPC in USD |
exactCostPerClick | Number | Exact match CPC in USD |
seoClicks | Number | Estimated monthly organic clicks |
seoClicksChange | Number | Change in organic clicks |
totalMonthlyClicks | Number | Total monthly clicks (organic + paid) |
percentMobileSearches | Number | Percentage of searches from mobile devices |
percentDesktopSearches | Number | Percentage of searches from desktop |
percentNotClicked | Number | Percentage of searches with no clicks |
percentPaidClicks | Number | Percentage of paid clicks |
percentOrganicClicks | Number | Percentage of organic clicks |
broadMonthlyCost | Number | Estimated monthly cost for broad match |
phraseMonthlyCost | Number | Estimated monthly cost for phrase match |
exactMonthlyCost | Number | Estimated monthly cost for exact match |
paidCompetitors | Number | Number of paid competitors |
rankingHomepages | Number | Number of homepages ranking for this keyword |
Summary Data
The actor also provides a summary record with aggregate statistics:
{"_summary": true,"domain": "example.com","totalKeywords": 150,"unfilteredTotal": 200,"adultKeywordTotal": 0,"totalVolume": 125000,"totalSeoClicks": 8500,"totalSeoClicksChange": 250,"queryTime": "2026-02-14T12:00:00Z","isValid": true}
Output Example
[{"domain": "domaincoasters.com","keyword": "custom coasters","termId": 12345678,"topRankedUrl": "https://domaincoasters.com/products/custom","rank": 3,"rankChange": 1,"searchVolume": 8100,"rankingDifficulty": 45,"broadCostPerClick": 2.50,"phraseCostPerClick": 2.75,"exactCostPerClick": 3.20,"seoClicks": 450,"seoClicksChange": 25,"totalMonthlyClicks": 520,"percentMobileSearches": 35,"percentDesktopSearches": 65,"percentNotClicked": 12,"percentPaidClicks": 15,"percentOrganicClicks": 73,"broadMonthlyCost": 125.50,"phraseMonthlyCost": 138.75,"exactMonthlyCost": 160.00,"paidCompetitors": 8,"rankingHomepages": 3}]
Use Cases
- SEO Research: Identify high-value keywords for content optimization
- Competitive Analysis: Understand which keywords drive traffic to competitor domains
- Content Strategy: Prioritize keywords based on search volume and ranking difficulty
- PPC Planning: Use CPC data to inform paid advertising budgets
- Traffic Estimation: Estimate potential organic traffic from keyword rankings
- Market Research: Analyze keyword trends and opportunities in your niche
How It Works
- URL Processing: Cleans and extracts domain names from provided URLs or domains
- Multi-Domain Loop: Processes each domain sequentially with a small delay between requests
- Navigation: Navigates to the keyword analysis page for each specified domain
- API Interception: Intercepts the backend API response that contains keyword data
- Data Extraction: Extracts and structures the keyword information
- Dataset Storage: Saves all keyword records to the Apify dataset
The actor uses Playwright to load the page and intercept network responses, ensuring accurate and up-to-date data extraction.
Performance
- Speed: Typically completes in 10-20 seconds per domain
- Multi-Domain: Processes domains sequentially with 2-second delay between domains
- Data Volume: Extracts 10-15 keywords per domain
- Memory Usage: Low - optimized for efficient execution
- Compute Units: Minimal usage due to fast execution time (scales linearly with number of domains)
Limitations
- Extracts the first page of keyword results (typically 10-15 keywords)
- Requires the domain to have keyword data available in the source platform
- Some domains may not have sufficient keyword data
- Network timeouts may occur for very slow connections
Error Handling
The actor includes robust error handling:
- Invalid Domain: Returns an error if no domain is provided
- No Data Found: Returns a record with error details if no keywords are captured
- Network Issues: Continues execution even if network idle timeout occurs
- Parsing Errors: Logs errors and continues with remaining data
Tips for Best Results
- Domain Format: Can use any format - full URLs, domains with/without www, with/without protocols - all will be automatically cleaned
- Proxy Usage: Enable proxy when processing multiple domains to avoid rate limiting
- Batch Size: For large lists, consider breaking into smaller batches of 10-20 domains per run
- Data Validation: Check for the
_summaryrecord per domain to verify data completeness - Retry Logic: If no data is returned for a domain, wait a few minutes and retry
- Regular Updates: Run the actor periodically to track keyword ranking changes
- Result Filtering: Filter results by domain name in the dataset to separate results
Integration
Using with Apify API
const client = new ApifyClient({token: 'YOUR_APIFY_TOKEN',});// Process multiple domainsconst run = await client.actor('YOUR_ACTOR_ID').call({domains: ['example.com','https://www.competitor.com','another-site.com'],useProxy: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();// Filter results by domain if neededconst exampleResults = items.filter(item => item.domain === 'example.com');console.log(exampleResults);// Single domain (backward compatible)const singleRun = await client.actor('YOUR_ACTOR_ID').call({domain: 'example.com',useProxy: false,});
Using with Apify Console
- Navigate to the actor in Apify Console
- Click "Try it"
- Enter your target domain
- Click "Start"
- View results in the Dataset tab
Support
For issues, questions, or feature requests, please contact support or create an issue in the actor's repository.
Version History
- 0.0.1 - Initial release with core keyword extraction functionality
License
This actor is licensed under the ISC License.