
Indeed Salary Analyzer
Pricing
Pay per event

Indeed Salary Analyzer
Comprehensive salary intelligence from Indeed - Extract and analyze compensation data for benchmarking, market research, and HR analytics.
0.0 (0)
Pricing
Pay per event
0
1
1
Last modified
a day ago
Indeed Salary Analyzer - Compensation Benchmarking Data
Get aggregate salary data from Indeed.com for compensation benchmarking, market research, and HR analytics.
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 (adds ~$0.01-0.05 per run). 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:
- Open the actor input form
- Find "Use Residential Proxies" checkbox
- Enable it (check the box)
- Run the actor
Via API/JSON:
{"jobTitles": ["Software Engineer"],"locations": ["San Francisco, CA"],"useResidentialProxies": true // ← REQUIRED}
Cost
- Residential proxies: ~$2-5 per GB
- Typical run: 1-10 MB (10-100 salary records)
- Estimated cost: $0.01-0.05 per run + compute costs
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
Field | Type | Description |
---|---|---|
searchMode | string | How to search: job_titles , companies , locations , or keywords |
Search Parameters
Field | Type | Description | Default |
---|---|---|---|
jobTitles | array | List of job titles to analyze | [] |
companies | array | List of companies to analyze | [] |
locations | array | Geographic locations (e.g., "San Francisco, CA") | [] |
keywords | array | Keywords to search for | [] |
experienceLevels | array | Filter by: entry , mid , senior , lead , all | ['all'] |
industryFilter | array | Optional industry filters | [] |
Output Configuration
Field | Type | Description | Default |
---|---|---|---|
maxResults | integer | Maximum salary records to scrape (1-10,000) | 10 |
includeSalaryRange | boolean | Include min/max ranges | true |
includeHistoricalData | boolean | Track changes across runs | true |
minSampleSize | integer | Minimum salaries required for a record | 0 |
onlyVerifiedSalaries | boolean | Only high-confidence data | false |
Performance & Anti-Blocking
Field | Type | Description | Default |
---|---|---|---|
useResidentialProxies | boolean | Enable for high-volume scraping | false |
requestDelay | integer | Delay between requests (ms) | 2000 |
maxConcurrency | integer | Concurrent 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
Field | Description |
---|---|
jobTitle | Job title or position name |
location | Geographic location |
salaryMin/Max | Salary range boundaries (annual) |
averageSalary | Average salary from Indeed's sample data |
salaryCurrency | Currency code (USD, EUR, GBP, etc.) |
salaryPeriod | Payment period (hour, year, month) |
hourly* | Normalized hourly rates for easy comparison |
sampleSize | Number of salary reports in Indeed's dataset |
confidenceScore | Data reliability score (0-100) |
dataQuality | Quality assessment: high, medium, low |
changeType | Change tracking: NEW, UPDATED, or UNCHANGED |
firstSeenAt | First time this data was scraped |
lastSeenAt | Last 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
- Use specific job titles: "Senior Software Engineer" vs. "Engineer"
- Include locations: Salaries vary significantly by region
- Set appropriate sample size:
minSampleSize: 20
for high reliability - Enable historical tracking: Monitor trends over time
- Always enable residential proxies: Required on Apify platform
For Cost Optimization
- Start with lower maxResults: Test with 10-20 records first
- Increase request delay: Higher delays = more stable scraping
- Lower concurrency: Use maxConcurrency: 1-2 for best reliability
For HR/Recruitment
- Search mode: job_titles: Most relevant for compensation planning
- Enable salary ranges:
includeSalaryRange: true
(default) - Set minSampleSize: Use
minSampleSize: 20
for reliable data - Track changes: Run weekly to monitor market shifts
🔄 Scheduling
Recommended Schedules
Weekly monitoring (stay current with market):
Cron: 0 9 * * 1Description: 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
- Typical Cost: $0.01-0.02 per salary record
- No Free Tier: Premium B2B positioning
- Transparent Billing: Track costs in real-time
Example Costs
Records | Estimated Cost |
---|---|
100 records | $1-2 |
500 records | $5-10 |
1,000 records | $10-20 |
5,000 records | $50-100 |
Note: Configure pricing in Apify Console → Actor → Monetization after deployment.
🛡️ Legal & Ethics
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
- Scrape: Extract raw salary data from Indeed pages
- Normalize: Convert to standard format with hourly rates
- Validate: Quality checks and confidence scoring
- Deduplicate: Remove duplicates (in-run and historical)
- Enrich: Add change detection and metadata
- 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
- HTTP over Playwright: 10x faster for Indeed's JSON-based data
- Batch requests: Search multiple titles/locations efficiently
- State management: Avoid re-scraping unchanged data
- 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
, enableonlyVerifiedSalaries
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: Disable
includeJobPostings
, increasemaxConcurrency
(with proxies)
📞 Support
Questions or issues?
- Email: kontakt@barrierefix.de
- GitHub Issues: Create an issue
- Apify Store: Leave a review
📝 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-Result: Cost-effective pricing - pay only for salary records extracted ✅ Well-Maintained: Built with TypeScript following Apify best practices
📞 Support & Feedback
- Email: kontakt@barrierefix.de
- Issues: GitHub Issues
- Documentation: Full docs on Apify Store
🔑 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
Built by Barrierefix - Enabling data-driven compensation decisions