Indeed Salary Analyzer avatar
Indeed Salary Analyzer

Pricing

Pay per event

Go to Apify Store
Indeed Salary Analyzer

Indeed Salary Analyzer

Comprehensive salary intelligence from Indeed - Extract and analyze compensation data for benchmarking, market research, and HR analytics.

Pricing

Pay per event

Rating

5.0

(2)

Developer

BarriereFix

BarriereFix

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

2

Monthly active users

14 days ago

Last modified

Share

Indeed Salary Analyzer - Compensation Benchmarking Data

Get aggregate salary data from Indeed.com for compensation benchmarking, market research, and HR analytics.

Apify Actor Made with TypeScript

Extract salary ranges, averages, and sample sizes from Indeed's compensation database. Perfect for HR professionals, recruiters, compensation analysts, and job seekers researching market rates.

⚠️ IMPORTANT: This actor requires residential proxies to work on Apify platform. Enable "Use Residential Proxies" in the input settings (see Apify proxy pricing). See setup


🎯 What You Get

  • 💰 Salary Ranges: Min, max, and average salaries from Indeed's aggregate data
  • 📊 Sample Sizes: Number of salary reports backing each data point (e.g., 318 samples)
  • 🎯 Confidence Scores: Quality metrics (0-100) based on sample size and data completeness
  • ⚡ Hourly Equivalents: Normalized hourly rates for easy comparison across pay periods
  • 📈 Historical Tracking: Monitor salary changes over time with incremental scraping
  • 🔄 Change Detection: Track NEW, UPDATED, and UNCHANGED salary data across runs
  • 🎚️ Quality Filtering: Filter by minimum sample size and confidence score
  • 🛡️ Reliable: Uses residential proxies and stealth techniques to bypass Indeed's anti-bot protection

📋 Use Cases

For HR & Recruitment

  • Set competitive salary ranges for job offers
  • Benchmark compensation against market rates
  • Budget for hiring plans with accurate salary data
  • Identify salary trends by location and experience level

For Compensation Analysts

  • Conduct salary surveys across industries
  • Analyze pay equity across locations
  • Track salary inflation and market changes
  • Generate compensation reports for leadership

For Job Seekers

  • Research salary expectations for target roles
  • Compare salaries across different locations
  • Understand compensation by experience level
  • Negotiate offers with market data

For Market Researchers

  • Track compensation trends in specific industries
  • Analyze remote vs. on-site salary differences
  • Monitor company-specific salary competitiveness
  • Generate industry salary reports

⚠️ IMPORTANT: Residential Proxies Required

This actor requires residential proxies to bypass Indeed's anti-bot protection on Apify platform.

Why Residential Proxies?

Indeed.com blocks all requests from datacenter IPs (including Apify's infrastructure). Without residential proxies, you'll get ERR_EMPTY_RESPONSE errors and zero results.

How to Enable

In the Apify Console UI:

  1. Open the actor input form
  2. Find "Use Residential Proxies" checkbox
  3. Enable it (check the box)
  4. Run the actor

Via API/JSON:

{
"jobTitles": ["Software Engineer"],
"locations": ["San Francisco, CA"],
"useResidentialProxies": true // ← REQUIRED
}

Cost

  • Residential proxies: Required for reliable scraping (see Apify proxy pricing)
  • Typical run: Low data usage (10-100 salary records)
  • Compute costs: Standard Apify platform compute pricing applies

See current pricing in the Apify Console when starting a run.

The actor will NOT work without this setting enabled on Apify platform.


🚀 Quick Start

Example 1: Search by Job Title

{
"searchMode": "job_titles",
"jobTitles": ["Software Engineer", "Data Scientist"],
"locations": ["San Francisco, CA", "New York, NY"],
"maxResults": 100,
"minSampleSize": 10,
"useResidentialProxies": true
}

Example 2: Location Comparison

{
"searchMode": "locations",
"locations": ["San Francisco, CA", "Austin, TX", "Remote"],
"jobTitles": ["Frontend Developer"],
"maxResults": 150
}

📥 Input Configuration

Required Fields

FieldTypeDescription
searchModestringHow to search: job_titles, companies, locations, or keywords

Search Parameters

FieldTypeDescriptionDefault
jobTitlesarrayList of job titles to analyze[]
companiesarrayList of companies to analyze[]
locationsarrayGeographic locations (e.g., "San Francisco, CA")[]
keywordsarrayKeywords to search for[]
experienceLevelsarrayFilter by: entry, mid, senior, lead, all['all']
industryFilterarrayOptional industry filters[]

Output Configuration

FieldTypeDescriptionDefault
maxResultsintegerMaximum salary records to scrape (1-10,000)10
includeSalaryRangebooleanInclude min/max rangestrue
includeHistoricalDatabooleanTrack changes across runstrue
minSampleSizeintegerMinimum salaries required for a record0
onlyVerifiedSalariesbooleanOnly high-confidence datafalse

Performance & Anti-Blocking

FieldTypeDescriptionDefault
useResidentialProxiesbooleanEnable for high-volume scrapingfalse
requestDelayintegerDelay between requests (ms)2000
maxConcurrencyintegerConcurrent requests (1-10)3

📤 Output Data

Salary Record Schema

{
"schemaVersion": "1.0.0",
"jobTitle": "Software Engineer",
"location": "San Francisco, CA",
"salaryMin": 150000,
"salaryMax": 200000,
"averageSalary": 175000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"hourlyMin": 72.12,
"hourlyMax": 96.15,
"hourlyAverage": 84.13,
"sampleSize": 318,
"confidenceScore": 100,
"dataQuality": "high",
"sourceUrl": "https://www.indeed.com/career/software-engineer/salaries/san-francisco-ca",
"scrapedAt": "2025-10-09T12:00:00Z",
"changeType": "NEW",
"firstSeenAt": "2025-10-09T12:00:00Z",
"lastSeenAt": "2025-10-09T12:00:00Z",
"version": "1.0.0"
}

Field Descriptions

FieldDescription
jobTitleJob title or position name
locationGeographic location
salaryMin/MaxSalary range boundaries (annual)
averageSalaryAverage salary from Indeed's sample data
salaryCurrencyCurrency code (USD, EUR, GBP, etc.)
salaryPeriodPayment period (hour, year, month)
hourly*Normalized hourly rates for easy comparison
sampleSizeNumber of salary reports in Indeed's dataset
confidenceScoreData reliability score (0-100)
dataQualityQuality assessment: high, medium, low
changeTypeChange tracking: NEW, UPDATED, or UNCHANGED
firstSeenAtFirst time this data was scraped
lastSeenAtLast time this data was updated

📊 Dataset Views

The actor provides 2 specialized views in the Apify Console:

1. Overview

All salary records with key compensation data including ranges, averages, sample sizes, and quality scores - perfect for general benchmarking and analysis.

2. Salary Ranges

Focused view on salary ranges with min/max/average data and confidence scoring - ideal for compensation planning and quick comparisons.


💡 Best Practices

For Accurate Results

  1. Use specific job titles: "Senior Software Engineer" vs. "Engineer"
  2. Include locations: Salaries vary significantly by region
  3. Set appropriate sample size: minSampleSize: 20 for high reliability
  4. Enable historical tracking: Monitor trends over time
  5. Always enable residential proxies: Required on Apify platform

For Cost Optimization

  1. Start with lower maxResults: Test with 10-20 records first
  2. Increase request delay: Higher delays = more stable scraping
  3. Lower concurrency: Use maxConcurrency: 1-2 for best reliability

For HR/Recruitment

  1. Search mode: job_titles: Most relevant for compensation planning
  2. Enable salary ranges: includeSalaryRange: true (default)
  3. Set minSampleSize: Use minSampleSize: 20 for reliable data
  4. Track changes: Run weekly to monitor market shifts

🔄 Scheduling

Weekly monitoring (stay current with market):

Cron: 0 9 * * 1
Description: Every Monday at 9 AM

Monthly reports (trend analysis):

Cron: 0 10 1 * *
Description: 1st of each month at 10 AM

Daily tracking (high-priority positions):

Cron: 0 8 * * *
Description: Every day at 8 AM

💰 Pricing

Pay-Per-Event Model: You pay only for salary records scraped.

  • Event Name: salary-record-ingested
  • Transparent Billing: Track costs in real-time
  • Premium B2B Tool: Professional pricing for business intelligence

See current pricing in the Apify Console when starting a run.

Note: Configure pricing in Apify Console → Actor → Monetization after deployment.


Important Considerations

  • Indeed's Terms of Service prohibit automated scraping
  • This actor is for educational and research purposes only
  • Always respect Indeed's robots.txt and rate limits
  • Consider using Indeed's official APIs for commercial use
  • Publicly available data may be scraped under fair use, but verify local laws

Responsible Scraping

  • Use reasonable request delays (2000ms+)
  • Limit concurrent requests (max 3-5)
  • Don't scrape personal identifiable information
  • Respect website performance and availability

🔧 Technical Details

Architecture

  • Runtime: Node.js 20+ with TypeScript
  • Framework: Crawlee (CheerioCrawler for efficiency)
  • Proxy Support: Apify Proxy (Datacenter & Residential)
  • State Management: Apify Key-Value Store
  • Output: Apify Dataset with 5 views

Data Processing Pipeline

  1. Scrape: Extract raw salary data from Indeed pages
  2. Normalize: Convert to standard format with hourly rates
  3. Validate: Quality checks and confidence scoring
  4. Deduplicate: Remove duplicates (in-run and historical)
  5. Enrich: Add change detection and metadata
  6. Save: Store with pay-per-event billing

Anti-Bot Strategy

  • Residential proxies via Apify Proxy
  • User-Agent rotation
  • Request delays (configurable)
  • Session management
  • Exponential backoff on errors
  • Circuit breaker pattern

📈 Performance

Expected Metrics

  • Speed: ~10-20 records/minute (with 2s delay)
  • Success Rate: Target >93% (matching Indeed actor average)
  • Memory: ~500MB peak
  • CPU: Low (HTTP-based, not browser automation)

Optimization Tips

  1. HTTP over Playwright: 10x faster for Indeed's JSON-based data
  2. Batch requests: Search multiple titles/locations efficiently
  3. State management: Avoid re-scraping unchanged data
  4. Proxy selection: Use datacenter for speed, residential for reliability

🐛 Troubleshooting

Common Issues

Issue: Getting blocked by Indeed

  • Solution: Enable residential proxies, increase request delay

Issue: Low confidence scores

  • Solution: Increase minSampleSize, enable onlyVerifiedSalaries

Issue: No results found

  • Solution: Check job title spelling, try broader searches

Issue: Duplicate records

  • Solution: Enable includeHistoricalData for better deduplication

Issue: Too slow

  • Solution: Decrease maxResults, increase maxConcurrency (with proxies)

📞 Support

Questions or issues?


📝 Changelog

v1.0.0 (2025-10-09)

  • Initial release
  • Multi-mode search (job titles, companies, locations, keywords)
  • Salary benchmarking with confidence scores
  • Historical tracking and change detection
  • Pay-per-event monetization
  • 5 specialized dataset views

🏆 Why Choose This Actor?

Focused on Salary Intelligence: Unlike generic job scrapers, extracts only aggregate compensation data ✅ Quality Metrics: Confidence scores and sample sizes for reliable decision-making ✅ Clean Output: No null values - only fields with actual data ✅ Historical Tracking: Monitor market changes over time with change detection ✅ Normalized Data: Hourly rate equivalents for easy comparison across pay periods ✅ B2B-Optimized: Built for HR professionals, recruiters, and compensation analysts ✅ Pay-Per-Event: Cost-effective pricing - pay only for salary records extracted ✅ Well-Maintained: Built with TypeScript following Apify best practices


🔗 Integration with Automation Tools

n8n Workflow Example

Weekly Salary Benchmarking:

Schedule (Monday 9am)
Apify: Run Indeed Salary Analyzer
Filter: confidenceScore >= 80
Google Sheets: Update salary benchmarks
Slack: Post summary to #hr-team

Zapier Workflow Example

Compensation Planning:

1. Trigger: Manual or scheduled
2. Run Indeed Salary Analyzer
3. Filter: sampleSize > 50
4. Airtable: Save to salary database
5. Gmail: Send report to hiring managers

Make.com Workflow Example

Market Intelligence Automation:

1. Indeed Salary Analyzer: Scrape target roles
2. Iterator: Process each salary record
3. HTTP: Enrich with location cost-of-living data
4. Google Sheets: Merge with company pay bands
5. Notion: Update compensation strategy page

❓ Frequently Asked Questions

Do I need an Indeed API key?

No! This scraper extracts salary data from Indeed's public pages. No API key or authentication required.

Can I use this with n8n, Zapier, or Make?

Yes! The flat JSON output integrates perfectly with automation tools like n8n, Zapier, and Make. Export to CSV for Google Sheets or Excel analysis.

How accurate are the salary estimates?

Accuracy depends on sample size. Records with 50+ salaries reported (high sampleSize) are generally reliable. The confidenceScore (0-100) helps you filter for quality data.

Why do I need residential proxies?

Indeed blocks datacenter IPs (including Apify's infrastructure). Without residential proxies, you'll get ERR_EMPTY_RESPONSE errors. Enable useResidentialProxies: true in your input.

Can I track salary changes over time?

Yes! Enable includeHistoricalData: true and schedule recurring runs. The actor tracks changeType (NEW, UPDATED, UNCHANGED) and timestamps (firstSeenAt, lastSeenAt) for trend analysis.

What's the difference between salaryMin/Max and averageSalary?

  • salaryMin/salaryMax = Salary range boundaries from Indeed's data
  • averageSalary = Mean salary from Indeed's sample
  • hourly* fields = Normalized hourly rates for easy comparison across pay periods

How many salary records can I scrape per run?

Set maxResults (1-10,000). Start small (10-20 records) to test, then scale up. See current pricing in the Apify Console when starting a run.

Can I filter by experience level?

Yes! Use the experienceLevels parameter with values like entry, mid, senior, lead, or all (default).

What if a job title has no salary data?

The scraper will skip records with insufficient data. Use minSampleSize to ensure only records with enough salaries are included.

How do I schedule recurring runs for market monitoring?

Use Apify's built-in scheduler (cron syntax) or integrate with n8n/Zapier. We recommend weekly runs for salary tracking, monthly for benchmarking reports.

📞 Support & Feedback



🔗 Explore More of Our Actors

🏢 Business Intelligence

ActorDescription
Crunchbase ScraperExtract company data and funding information for business intelligence
Northdata ScraperExtract German company data from Northdata for business research
Shopify Store IntelligenceAnalyze Shopify stores for competitive intelligence and market research
Apify Store RadarMonitor Apify Store actors for market intelligence
GitHub Sponsors ScraperExtract GitHub Sponsors data for developer funding research

💬 Social Media & Community

ActorDescription
Reddit Scraper ProMonitor subreddits and track keywords with sentiment analysis
Discord Scraper ProExtract Discord messages and chat history for community insights
YouTube Comments HarvesterComprehensive YouTube comments scraper with channel-wide enumeration
YouTube Contact ScraperExtract YouTube channel contact information for outreach
YouTube Shorts ScraperScrape YouTube Shorts for viral content research

🔍 SEO & Marketing

ActorDescription
Ahrefs Scraper ProExtract SEO metrics and backlink data from Ahrefs
Semrush ScraperScrape Semrush for keyword research and competitor analysis
Event Scraper ProExtract events from Eventbrite, Meetup, and other platforms

🏷️ SEO Keywords

Indeed salary data, compensation benchmarking, salary scraper, market salary research, HR analytics, salary intelligence, compensation analysis, Indeed data extraction, salary ranges, pay scale data, compensation data API, Indeed API alternative, salary survey data, market rate analysis, compensation planning tool, how to scrape Indeed salaries, Indeed salary analyzer, salary comparison tool, HR compensation data, recruitment salary intelligence, n8n Indeed integration, Zapier Indeed scraper, Make Indeed automation, Indeed market research, salary trend tracking


Built by Barrierefix - Enabling data-driven compensation decisions