{
  "openapi": "3.0.1",
  "info": {
    "title": "Levels.fyi Jobs Scraper",
    "description": "[💰 $1 / 1K] Extract tech jobs from Levels.fyi with base and total compensation ranges, company metadata, locations, work arrangement, and apply links. Search by keyword and location, filter by work arrangement and job family, or paste Levels.fyi URLs for structured, export-ready data.",
    "version": "1.0",
    "x-build-id": "gGoB9QEm0obW9w6fh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~levels-fyi-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-levels-fyi-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/solidcode~levels-fyi-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-levels-fyi-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/solidcode~levels-fyi-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-levels-fyi-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchQueries": {
            "title": "Search Keywords",
            "maxItems": 50,
            "type": "array",
            "description": "Job titles or keywords to search for, such as 'Software Engineer', 'Data Scientist', or 'Product Manager'. Each keyword runs a separate search. Add up to 50 keywords per run; each is searched independently. Leave empty to collect the broadest result set for your location and filters.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, or work arrangement to search in. Examples: 'San Francisco', 'New York', 'London', 'Remote'. Combined with each keyword. Leave empty to search everywhere."
          },
          "startUrls": {
            "title": "Direct Levels.fyi URLs",
            "maxItems": 50,
            "type": "array",
            "description": "Paste full Levels.fyi job-search URLs (e.g. https://www.levels.fyi/jobs?...) or individual job-listing URLs to scrape them directly. Useful when you already have a search dialed in on the website. Up to 50 URLs per run.",
            "items": {
              "type": "string"
            }
          },
          "workArrangement": {
            "title": "Work Arrangement",
            "enum": [
              "",
              "remote",
              "hybrid",
              "office"
            ],
            "type": "string",
            "description": "Filter by where the role is performed. Leave on 'Any' to include all arrangements.",
            "default": ""
          },
          "jobFamily": {
            "title": "Job Family",
            "enum": [
              "",
              "software-engineer",
              "software-engineering-manager",
              "data-scientist",
              "data-science-manager",
              "product-manager",
              "product-designer",
              "security-analyst",
              "hardware-engineer"
            ],
            "type": "string",
            "description": "Limit results to one engineering or product discipline. Leave on 'Any' to include all job families.",
            "default": ""
          },
          "level": {
            "title": "Seniority Level",
            "enum": [
              "",
              "internship",
              "entry",
              "mid_staff",
              "principal",
              "manager",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Limit results to one seniority level. Leave on 'Any' to include all levels.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort Results By",
            "enum": [
              "relevance",
              "total_compensation",
              "date_published"
            ],
            "type": "string",
            "description": "Order in which jobs are returned. 'Relevance' is the default ranking.",
            "default": "relevance"
          },
          "minTotalCompensation": {
            "title": "Minimum Total Compensation (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include jobs whose median total compensation is at least this many US dollars. Leave empty for no minimum."
          },
          "maxResults": {
            "title": "Max Results per Search",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of job listings to collect per search keyword (or per start URL). Set to 0 to collect all available results. Results are fetched in pages: the actor stops once your cap is reached but always keeps the whole final page, so a small cap (e.g. 10) can return a little more than you asked for. Listings repeated across pages — or shared between keywords — are deduplicated, so the final count can also run slightly below your cap. Note: Levels.fyi returns at most ~200 companies' worth of jobs for a single keyword, so one keyword tops out around a few hundred listings — use several keywords (or add a location/level filter) to widen coverage beyond that.",
            "default": 100
          },
          "includeDescription": {
            "title": "Fetch Full Job Descriptions",
            "type": "boolean",
            "description": "Include the full job description (text and HTML) for each listing. Leave on for the most complete data. Turn off for lighter records when you only need titles, companies, locations, and compensation.",
            "default": true
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}