# Levels.fyi Job Search API Documentation

<p><strong>Levels.fyi Job Search API Documentation</strong> Search jobs on Levels.fyi. Each job has the id, title, company, locations, work arrangement (remote, hybrid, office), base salary range with currency, total compensation range, posted date and apply link. The answer also lists the companies with type, description, employee count and valuation. Levels.fyi groups jobs per company: page and limit count companies (up to 20), and jobs_per_company (up to 15) sets the jobs per company. The work_arrangement, min_base_compensation (USD, checked against the minimum base pay of each job) and posted_within_days filters are checked on every returned job, so jobs without that data are left out. The location is a Levels.fyi slug such as united-states, germany or san-francisco-bay-area. A call takes 1 to 10 seconds. Cost: 1 credit per successful request. Failed requests and empty answers from a missing board cost nothing.</p>

- **Documentation:** [https://scrappa.co/docs/levels-api/levels_jobs](https://scrappa.co/docs/levels-api/levels_jobs)
- **API group:** Levels.fyi Jobs API
- **Endpoint:** `GET https://scrappa.co/api/levels/jobs`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `q` | string | No | Search text. |
| `company` | string | No | Levels.fyi company slug, e.g. google. |
| `location` | string | No | Levels.fyi location slug, e.g. germany. |
| `work_arrangement` | string | No | remote, hybrid or office. |
| `min_base_compensation` | integer | No | Minimum yearly base pay in USD, e.g. 200000. |
| `posted_within_days` | integer | No | Only jobs posted in the last N days, 1 to 365. |
| `sort` | string | No | relevance, date_published or total_compensation. Default: relevance. |
| `page` | integer | No | Page of companies, 1 to 500. Default: 1. |
| `limit` | integer | No | Companies per page, 1 to 20. Default: 10. |
| `jobs_per_company` | integer | No | Jobs per company, 1 to 15. Default: 3. |

## Example response

```json
{
    "data": {
        "jobs": [
            {
                "id": "levels:13oj1z67ynfdy",
                "title": "Software Engineer, Security",
                "salary": {
                    "max": 350000,
                    "min": 250000,
                    "currency": "USD",
                    "interval": "yearly"
                },
                "company": {
                    "name": "Slash",
                    "slug": "slash"
                },
                "location": {
                    "raw": "San Francisco, CA"
                },
                "posted_at": "2026-08-12T00:00:00.000Z",
                "workplace_type": "office"
            }
        ],
        "pagination": {
            "page": 1,
            "unit": "companies",
            "limit": 10,
            "has_more": true,
            "next_page": 2,
            "total_results": 1200
        }
    },
    "meta": {
        "credits": 1,
        "billable": true
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A required query parameter is missing or invalid. This response is not billable. |
| 404 | Not Found | The board, company or job does not exist. This response is not billable. |
| 503 | Upstream Error | The job board did not answer. Try again shortly. This response is not billable. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
