Levels.fyi Jobs Scraper 📊 avatar

Levels.fyi Jobs Scraper 📊

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Levels.fyi Jobs Scraper 📊

Levels.fyi Jobs Scraper 📊

Unlock real-time salary insights and tech job listings from Levels.fyi with lightning speed. Instantly extract detailed compensation data and role specifics for competitive analysis. Built for high-speed performance, this scraper delivers accurate market data without delay.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(3)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

1

Bookmarked

37

Total users

3

Monthly active users

3 days ago

Last modified

Share

What does Levels.fyi Jobs Scraper do?

Levels.fyi Jobs Scraper collects job listings from Levels.fyi, including salary ranges, company details, locations, and application links. Enter a keyword, a location, or a combined search query, set how many jobs you want, and download a structured dataset. Use it for salary research, hiring intelligence, job board monitoring, and workforce analysis without copying listings by hand.

The Actor saves jobs in batches while it runs, so you do not lose progress if a later page fails. Optional detail collection adds full job descriptions, employment types, and structured address data for each listing.

Why use Levels.fyi Jobs Scraper?

  • Salary ranges when published - Collect base salary and total compensation ranges alongside the job title and company.
  • Company context - Save company type, employee count, valuation estimate, description, and logo URL with each listing.
  • Search that matches the site - Use a keyword, a location, or a free-text query such as "product manager Toronto".
  • Control over run size - Set a job limit and a page cap to balance speed and depth.
  • Optional full descriptions - Add complete job descriptions and structured location details when you need them.
  • Apify platform features - Schedule repeat runs, connect webhooks, call the Actor through the Apify API, and export the dataset to JSON, CSV, Excel, or XML.

What data can you extract from Levels.fyi?

FieldDescription
idLevels.fyi job identifier
titleJob title
companyCompany name
company_slugCompany identifier used in Levels.fyi URLs
company_typeCompany classification such as public or private
company_employee_countReported employee count
company_estimated_valuationEstimated company valuation when published
company_short_descriptionShort company description
company_iconCompany logo URL
is_promotedWhether the listing is promoted
locationsJob locations
work_arrangementWork arrangement such as office, hybrid, or remote
application_urlDirect application link
posting_datePosting date in ISO 8601 format
expiry_dateApplication deadline when published
min_base_salaryMinimum annual base salary
max_base_salaryMaximum annual base salary
base_salary_currencyBase salary currency code
min_total_salaryMinimum total compensation
max_total_salaryMaximum total compensation
job_family_slugJob family identifier from the detail record
employment_typesEmployment types such as full time
postal_addressesStructured address records from the detail page
total_compensation_estimatesCompensation estimates from the detail page
description_htmlJob description formatted as HTML
description_textJob description as plain text
urlLevels.fyi job page URL
detailsFull detail record when detail collection is enabled
_sourceData source label, always levels.fyi

How to collect Levels.fyi job data

  1. Open the Actor on Apify Store.
  2. Enter a keyword, a location, or a full search query.
  3. Set the maximum number of jobs and, if needed, the page cap.
  4. Enable detail collection when you need full job descriptions.
  5. Run the Actor and open the dataset.
  6. Export the data or connect the dataset to your workflow.

Search values follow a simple order. When keyword or location is supplied, the Actor combines them into one search. When both are empty, it uses searchQuery. When every search field is empty, it uses the default query software engineer, so a run started without input still returns data.

Input Parameters

ParameterTypeRequiredDefaultDescription
searchQueryStringNosoftware engineerFree-text query used when keyword and location are empty
keywordStringNo-Job title or role, for example Data Scientist
locationStringNo-City, country, or work arrangement, for example Toronto or Remote
results_wantedIntegerNo20Maximum number of job listings to save
max_pagesIntegerNo10Safety cap on result pages. Each page can contain up to 25 company groups
collectDetailsBooleanNofalseFetch full descriptions and extra detail fields for each listing
proxyConfigurationObjectNo{}Optional Apify Proxy or custom proxy URLs

Usage Examples

Collect software engineering jobs

Save the first 20 software engineering listings.

{
"keyword": "software engineer",
"results_wanted": 20
}

Search a city and role

Combine a role with a location to target one market.

{
"keyword": "product manager",
"location": "Toronto",
"results_wanted": 100,
"max_pages": 3
}

Collect full job descriptions

Enable detail collection when you need descriptions, employment types, and address records.

{
"searchQuery": "data scientist remote",
"results_wanted": 25,
"max_pages": 2,
"collectDetails": true
}

Use a larger run with residential proxies

Use Apify Proxy for wide collections or repeated scheduled runs.

{
"keyword": "machine learning engineer",
"location": "United States",
"results_wanted": 500,
"max_pages": 10,
"collectDetails": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Sample Output

{
"id": "13oj1z67ynfdy",
"title": "Software Engineer, Security",
"company": "Slash",
"company_slug": "slash",
"company_type": "private",
"company_employee_count": 90,
"company_short_description": "Virtual card and banking platform",
"company_icon": "https://img.logo.dev/slash.com?token=pk_Ez-J4YOpSS-Bjtug_T41Dw",
"is_promoted": true,
"locations": ["San Francisco, CA"],
"work_arrangement": "office",
"application_url": "https://www.linkedin.com/jobs/view/software-engineer-security-at-slash-4453350637",
"posting_date": "2026-08-12T00:00:00.000Z",
"min_base_salary": 250000,
"max_base_salary": 350000,
"base_salary_currency": "USD",
"min_total_salary": 250000,
"max_total_salary": 350000,
"description_text": "About Slash\nSlash is building the future of business banking...",
"description_html": "<p>About Slash</p>\n<p>Slash is building the future of business banking...</p>",
"url": "https://www.levels.fyi/jobs?jobId=13oj1z67ynfdy",
"_source": "levels.fyi"
}

Tips for Best Results

  • Use a specific role name. "Backend Engineer" returns more relevant listings than "engineer".
  • Add a location when you want one market, or leave it empty for a broader search.
  • Start with 20 to 50 jobs while you check the output, then increase the limit.
  • Keep max_pages as a safety cap for large scheduled runs.
  • Enable collectDetails only when you need descriptions, since it adds one request per job.
  • Run several focused searches when you need coverage across different titles or regions.
  • Use residential proxies for repeated large runs.

Integrations

  • Google Sheets - Send job and salary data to a spreadsheet for review.
  • Webhooks - Trigger downstream workflows after a run completes.
  • Make or Zapier - Connect results to no-code automations.
  • Apify API - Read datasets from your own applications and dashboards.
  • Power BI or Looker Studio - Build salary and hiring reports from exported data.

Export formats

Apify datasets can be downloaded as JSON, CSV, Excel, XML, and other supported formats.

Frequently Asked Questions

Can I export Levels.fyi job data to CSV or Excel?

Yes. Open the dataset in Apify Console and choose CSV, Excel, JSON, or XML from the export menu. The API also returns the same records.

Can I run this Actor on a schedule?

Yes. Create a schedule in Apify Console to refresh your job dataset hourly, daily, or weekly. Scheduled runs use the input you save in the task.

How many jobs can I collect in one run?

The limit depends on your search and max_pages. Each page can return up to 25 company groups, and each group can include multiple jobs. Set results_wanted to the number you need and max_pages high enough to reach it.

Why are some salary fields empty?

Not every employer publishes salary ranges on Levels.fyi. When a range is missing, those fields are omitted from that record. Other fields remain available.

What is the difference between base salary and total compensation?

Base salary is the annual wage. Total compensation can include bonus, equity, and other components. Both ranges appear when the source publishes them.

Why is expiry_date missing on some jobs?

The posting date is available for most listings, but an application deadline is only present when the employer publishes one.

How long does a run take?

A run with 20 jobs usually finishes in a few seconds. Enabling collectDetails adds one detail request per job. Runs with up to about 100 details usually finish in a few seconds, and larger runs may pause when the source rate limit is reached.

Does the Actor open each job page?

No. It requests the detail record directly from the same job data service used by the search results, so there is no page rendering step.

Can I search by location only?

Yes. Enter a location and leave the keyword empty. The Actor runs a location-based search.

Can I use my own proxy?

Yes. Add custom proxy URLs in proxyConfiguration or enable Apify Proxy. Residential proxies are the better choice for large or repeated runs.

Is the data fresh?

The Actor reads listings available on Levels.fyi at run time. Schedule repeat runs to keep a dataset current.

Does the Actor return duplicate jobs?

No. Each job ID is saved once per run, even when a job appears in more than one page.

The Actor collects publicly available job listings. You are responsible for following Levels.fyi's terms, applicable privacy rules, and local law.

Support

For issues, feature requests, or questions, use the Issues tab on the Actor page or contact the developer through Apify.

This Actor is intended for legitimate data collection from publicly available job listings. Users are responsible for using the data responsibly and complying with applicable laws, website terms, and privacy rules. The developer assumes no liability for misuse.