Levels.fyi Scraper: US Tech Salary + Jobs
Pricing
from $3.00 / 1,000 serp results
Levels.fyi Scraper: US Tech Salary + Jobs
Extract US tech job listings from Levels.fyi with structured compensation data (base salary, total comp, equity, bonus) at the top FAANG-tier companies. Returns title, company, location, comp min/max USD, level, work arrangement, description and apply URL. Pay-per-result.
Pricing
from $3.00 / 1,000 serp results
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Extract US tech job listings from Levels.fyi, the salary transparency site for FAANG-tier engineering, product and data roles. Every row includes Levels.fyi's structured compensation data (base salary, total comp, currency), location, work arrangement and a direct apply URL to the employer's ATS.
What it does
Levels.fyi hosts 70,000+ open tech jobs with the site's own structured salary data on the majority of rows. This actor pulls listings from Levels.fyi's SSR pages, then optionally fetches each job's detail JSON for the full description, employment type, and perks, PLUS each company's Levels.fyi profile for the unique compensation-by-level averages that only Levels.fyi publishes.
Three enrichment modes:
- Minimal (default): 15 SERP-level fields per row including base/total salary and currency when Levels.fyi surfaces them (about 67% fill rate).
- With job details: adds full HTML description, employment type, work arrangement, perks list, structured location, years-of-experience parsing.
- With company details: adds 15+ company profile fields (industry, employee count, valuation, HQ address, ticker, benefits page URL, funding stage) plus the unique
company_avg_total_comp_by_levelarray with total comp and sample size for every level Levels.fyi tracks at that company.
Sample output
{"_type": "job","id": "105808633052177094","title": "Staff Machine Learning Engineer, Ad Serving","company_name": "Roku","company_slug": "roku","company_logo_url": "https://img.logo.dev/roku.com?token=pk_Ez-J4YOpSS-Bjtug_T41Dw","company_type": "public","employee_count": 3400,"estimated_valuation_usd": 20800000000,"location": "New York, New York","salary_min": 195000,"salary_max": 510000,"salary_currency": "USD","total_comp_min_usd": 195000,"total_comp_max_usd": 510000,"level": "Staff","workplace_type": "onsite","employment_type": "full_time","posted_at": "2026-08-21","expires_at": "2026-09-20","job_url": "https://www.levels.fyi/jobs?jobId=105808633052177094","application_url": "https://www.weareroku.com/jobs/7991258?gh_jid=7991258","job_family_slug": "software-engineer","source_platform": "levels.fyi","company_about": "Roku, Inc. is an American publicly traded company based in San Jose, California...","company_website": "https://www.roku.com","company_founded": 2002,"company_headquarters": "1173 Coleman Ave, San Jose, CA 95110, USA","company_hq_city": "San Jose","company_hq_state": "California","company_industry": "Consumer Electronics","company_ticker": "ROKU","company_size_range": "1,001-5,000","company_active_jobs_count": 187,"company_avg_total_comp_by_level": [{"level": "L3", "avg_total_comp_usd": 215379, "sample_size": 26, "job_family": "software-engineer"},{"level": "L4", "avg_total_comp_usd": 329868, "sample_size": 19, "job_family": "software-engineer"},{"level": "L5", "avg_total_comp_usd": 508600, "sample_size": 30, "job_family": "software-engineer"}]}
Pricing
$0.001 per actor start + $0.003 per SERP row + $0.005 per detail row (when includeJobDetails=true) + $0.005 per unique company profile (when includeCompanyDetails=true). About $3 to $10 per 1,000 tech roles depending on enrichment.
You only pay for rows that successfully return data. Failed fetches are not charged.
New to Apify? Every account gets a $5 free monthly platform credit, enough for around 1,000 detail rows on this actor before you commit to paying anything. Test extensively first.
| Event | Price |
|---|---|
| Actor start | $0.001 |
| SERP row | $0.003 |
Job detail row (when includeJobDetails=true) | $0.005 |
Company profile (unique company, when includeCompanyDetails=true) | $0.005 |
Input
| Field | Type | Description |
|---|---|---|
searchQueries | array of strings | Job titles or job families to search. Slugified into Levels.fyi's job-family filter (e.g. software engineer becomes /jobs/title/software-engineer). |
startUrls | array of strings | Alternative to searchQueries. Feed direct Levels.fyi jobs URLs. |
location | string | Optional location filter (San Francisco Bay Area, New York City Area, Seattle Area, Remote). |
companySlugs | array of strings | Optional. Restrict to specific companies (google, meta, apple, netflix, etc). Each company walked up to 15 jobs per query. |
includeJobDetails | boolean | Fetch each job's SSR detail JSON for description, perks, work arrangement. Default false. |
includeCompanyDetails | boolean | Fetch each unique company's Levels.fyi profile + salary rollup for the by-level compensation averages. Default false. |
maxResults | integer | Total cap across all queries. Default 20. |
maxResultsPerQuery | integer | Per-query cap. Default 100. |
maxConcurrency | integer | Concurrent detail requests. Default 5. |
Example input
{"searchQueries": ["software engineer", "product manager"],"companySlugs": ["google", "meta", "netflix"],"location": "san-francisco-bay-area","includeJobDetails": true,"includeCompanyDetails": true,"maxResults": 200}
Output fields
Identity
id: Levels.fyi internal job IDtitle: Role titlecompany_name,company_slug,company_logo_url(logo.dev image URL when available)
Compensation (Levels.fyi's unique differentiator)
salary_min,salary_max,salary_currencytotal_comp_min_usd,total_comp_max_usd: Total comp including base + equity + bonusbase_salary_min_usd,base_salary_max_usd: Base only
Level and experience
level: Coarse level tag inferred from title (Entry, Senior, Staff, Principal, Distinguished, Manager)years_experience_min,years_experience_max: Parsed from description when available
Company signals (SERP-level, always populated)
company_type: public, private, non_profit, governmentemployee_count: Approximate sizeestimated_valuation_usd: Market cap for public companies, private valuation otherwise
Job classification
workplace_type: remote, hybrid, onsiteemployment_type: full_time, part_time, contract, internshipjob_family_slug: Levels.fyi's job-family taxonomy
Timing
posted_at,expires_at: ISO 8601 datesscraped_at: When the row was fetched
Content
description: Full HTML description (withincludeJobDetails=true)perks: Employer-verified perks list (401k, ESPP, health insurance, etc)location: City, state or multi-location pipe-joinedjob_url: Canonical Levels.fyi URLapplication_url: Direct link to the employer's ATS
Contact extraction (with includeJobDetails=true)
contact_emails: Email addresses found in the job description (e.g.recruit-engineer@hennge.com). Deduplicated, lowercased.contact_phones: Phone numbers found in the description (US/international formats).contact_urls: External HTTP(S) links from the description (levels.fyi self-references excluded).
Company profile (with includeCompanyDetails=true)
company_about,company_website,company_foundedcompany_headquarters,company_hq_city,company_hq_state,company_hq_countrycompany_size_range,company_industry,company_tickercompany_estimated_annual_revenue,company_funding_stagecompany_benefits_page: URL to the company's dedicated benefits pagecompany_active_jobs_count: Total open Levels.fyi listings at this companycompany_active_jobs: Array of{title, job_url, location, salary_text}for other rolescompany_avg_total_comp_by_level: Levels.fyi's proprietary data. Array of{level, avg_total_comp_usd, avg_base_salary_usd, sample_size, job_family}for every level Levels.fyi tracks at this company. UNIQUE to this actor.
Use with AI Agents (MCP)
Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.
Apify MCP server URL:
https://mcp.apify.com?tools=santamaria-automations/levels-fyi-scraper
Example prompt once connected:
"Use
levels-fyi-scraperto find Staff+ level software engineering roles at Google, Meta and Netflix in the San Francisco Bay Area. Include company details. Return a table with title, total comp range and the company's L6 average total comp."
Clients that support dynamic tool discovery (Claude.ai, VS Code) receive the full input schema automatically.
Why this scraper
- Only structured compensation data at scale. Levels.fyi is the reference dataset for US tech compensation. Every row includes salary min/max in USD on the majority of postings, plus the unique by-level averages when you enable company details.
- FAANG-tier company coverage. Google, Meta, Apple, Netflix, Amazon, Microsoft, Nvidia, Anthropic, OpenAI and the rest of the top tech employers all list on Levels.fyi.
- Rich company profile. 15+ company fields (industry, valuation, ticker, size range, funding stage) come out of the /companies profile with a single extra HTTP hop, deduplicated across all rows from the same employer.
- Zero login, zero captcha subscriptions. HTTP-only, uses Levels.fyi's own SSR endpoints. No browser tier needed.
- Pay-per-row. No hourly rental. Small runs cost cents.
Common use cases
- Comp benchmarking for hiring teams. Get the Levels.fyi total-comp range on every open role from a target competitor list, side-by-side with the company's own average by level.
- Recruiters. Track FAANG-tier openings and pitch candidates with real total-comp numbers instead of guesses.
- Job seekers building comp models. Feed structured comp data into a personal negotiation spreadsheet without manually copying from the site.
- AI job-search agents. Give agents structured access to US tech comp signals.
- Compensation research. Track how comp bands shift over time at specific companies and levels.
Notes and limits
- Salary fill rate is ~67% on the SERP-level (Levels.fyi structures salary data on most, not all, listings). Rows without disclosed salary have null in the salary fields but everything else populated.
- Salary is USD-dominated. The
salary_currencyfield is populated for non-USD roles (JPY, EUR, GBP, INR). The*_usdfields are only populated when the reported currency is USD (no FX conversion in this actor). levelfield is coarse. It infers from title keywords (Senior/Staff/Principal). The company-specific level (L5 at Google, E5 at Meta) requires an extra lookup and lives incompany_avg_total_comp_by_level(in the company profile) rather than on the job row.- Pagination is per-URL not per-query. Levels.fyi's SSR returns 5 companies x 3 jobs = 15 rows per multi-company page, or 15 jobs on a single-company page. Use
companySlugsto walk companies deeply, or feed multiple keywords to get breadth. Client-side deep pagination is behind an encrypted API and not supported. years_experience_*is parsed from the description with a regex. Not every listing follows a consistent format; expect null on ~40% of rows.- Company profile pages are deduplicated per run. If your batch has 20 rows from Google, we fetch
/companies/googleonce and apply to all 20. Only unique company profiles are billed.
Related Actors
- Job Feed: one normalized, deduplicated job feed across 50+ international job boards. Orchestrates the NanoScrape fleet.
- Career Site Jobs Scraper: scrape jobs directly from company career pages (Greenhouse, Lever, Workday, etc.).
- Website Job Extractor: extract job listings from any website via HTML pattern detection.
- LinkedIn Jobs Scraper: Broader coverage for tech + non-tech roles across countries.
- Indeed Scraper: The generalist US jobs board.
- Y Combinator Jobs Scraper: Startup jobs from Y Combinator's job board.
- Wellfound (AngelList) Jobs Scraper: Startup roles with equity ranges.
- WeWorkRemotely Scraper: Remote-only tech roles.
Support
For issues, feature requests, or fields not yet extracted, please open an issue on the Issues tab of this actor. We typically respond within 24 hours.
Contact: contact@nanoscrape.com
