Seo Keywords Analyzer avatar

Seo Keywords Analyzer

Pricing

$2.00 / 1,000 results

Go to Apify Store
Seo Keywords Analyzer

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

Salman Bareesh

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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:

ParameterTypeRequiredDefaultDescription
domainsArrayYes*-Array of domains or URLs to analyze (e.g., ["example.com", "https://www.site.com/page"])
domainStringYes*-Single domain/URL to analyze (for backward compatibility)
useProxyBooleanNofalseEnable 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

FieldTypeDescription
domainStringThe analyzed domain
keywordStringThe keyword phrase
termIdNumberUnique identifier for the keyword
topRankedUrlStringThe highest ranking URL for this keyword
rankNumberCurrent ranking position
rankChangeNumberChange in ranking position
searchVolumeNumberMonthly search volume
rankingDifficultyNumberDifficulty score for ranking (0-100)
broadCostPerClickNumberBroad match CPC in USD
phraseCostPerClickNumberPhrase match CPC in USD
exactCostPerClickNumberExact match CPC in USD
seoClicksNumberEstimated monthly organic clicks
seoClicksChangeNumberChange in organic clicks
totalMonthlyClicksNumberTotal monthly clicks (organic + paid)
percentMobileSearchesNumberPercentage of searches from mobile devices
percentDesktopSearchesNumberPercentage of searches from desktop
percentNotClickedNumberPercentage of searches with no clicks
percentPaidClicksNumberPercentage of paid clicks
percentOrganicClicksNumberPercentage of organic clicks
broadMonthlyCostNumberEstimated monthly cost for broad match
phraseMonthlyCostNumberEstimated monthly cost for phrase match
exactMonthlyCostNumberEstimated monthly cost for exact match
paidCompetitorsNumberNumber of paid competitors
rankingHomepagesNumberNumber 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

  1. URL Processing: Cleans and extracts domain names from provided URLs or domains
  2. Multi-Domain Loop: Processes each domain sequentially with a small delay between requests
  3. Navigation: Navigates to the keyword analysis page for each specified domain
  4. API Interception: Intercepts the backend API response that contains keyword data
  5. Data Extraction: Extracts and structures the keyword information
  6. 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

  1. Domain Format: Can use any format - full URLs, domains with/without www, with/without protocols - all will be automatically cleaned
  2. Proxy Usage: Enable proxy when processing multiple domains to avoid rate limiting
  3. Batch Size: For large lists, consider breaking into smaller batches of 10-20 domains per run
  4. Data Validation: Check for the _summary record per domain to verify data completeness
  5. Retry Logic: If no data is returned for a domain, wait a few minutes and retry
  6. Regular Updates: Run the actor periodically to track keyword ranking changes
  7. 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 domains
const 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 needed
const 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

  1. Navigate to the actor in Apify Console
  2. Click "Try it"
  3. Enter your target domain
  4. Click "Start"
  5. 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.