{
  "openapi": "3.1.0",
  "info": {
    "title": "Salaries API",
    "version": "1.0.0",
    "summary": "Base salary ranges from open job postings on public Greenhouse, Ashby and Lever boards (pay-transparency ranges, with the posting URL) and certified H-1B LCA wages from US Department of Labor disclosure files, aggregated by title, level, company and city with sample counts, plus an append-only history of every range change",
    "description": "Base salary ranges from open job postings on public Greenhouse, Ashby and Lever boards (pay-transparency ranges, with the posting URL) and certified H-1B LCA wages from US Department of Labor disclosure files, aggregated by title, level, company and city with sample counts, plus an append-only history of every range change. Job boards read weekly (Wednesdays 13:45 UTC), and each run looks for new employer boards among fru.dev registry companies; H-1B wages loaded quarterly when DOL publishes a new file. Free to read; please cite \"Salaries (salaries.fru.dev)\" with a link. Responses are cached at the edge; keep to about 60 requests a minute. Guide: https://salaries.fru.dev/agents",
    "contact": {
      "name": "fru.dev",
      "url": "https://fru.dev",
      "email": "fru.dev3@gmail.com"
    }
  },
  "externalDocs": {
    "description": "For AI agents",
    "url": "https://salaries.fru.dev/agents"
  },
  "servers": [
    {
      "url": "https://salaries.fru.dev"
    }
  ],
  "paths": {
    "/api/titles": {
      "get": {
        "operationId": "list_titles",
        "summary": "Pay by job title: posted ranges and H-1B wages",
        "description": "Pay by job title: posted ranges and H-1B wages. Returns titles with slug, name, family, titles.fru.dev link, posted-range count, company count, stats (p10, p25, median, p75, p90 of range midpoints; medians of posted min and max) and the H-1B summary (n, median, p25, p75).",
        "parameters": [
          {
            "name": "family",
            "in": "query",
            "required": false,
            "description": "Only this title family",
            "schema": {
              "type": "string",
              "enum": [
                "engineering",
                "research",
                "leadership"
              ]
            },
            "example": "engineering"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "titles with slug, name, family, titles.fru.dev link, posted-range count, company count, stats (p10, p25, median, p75, p90 of range midpoints; medians of posted min and max) and the H-1B summary (n, median, p25, p75)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "titles": [
                    {
                      "slug": "software-engineer",
                      "name": "Software Engineer",
                      "family": "engineering",
                      "titlesUrl": "",
                      "n": 1323,
                      "companies": 78,
                      "stats": {
                        "n": 1323,
                        "p10": 172500,
                        "p25": 202483,
                        "median": 237263,
                        "p75": 287600,
                        "p90": 360000,
                        "medMin": 196000,
                        "medMax": 275000
                      },
                      "lca": {
                        "n": 35153,
                        "median": 187726,
                        "p25": 162600,
                        "p75": 218825
                      },
                      "url": "https://salaries.fru.dev/titles/software-engineer"
                    },
                    {
                      "slug": "engineering-manager",
                      "name": "Engineering Manager",
                      "family": "leadership",
                      "titlesUrl": "https://titles.fru.dev/titles/engineering-manager",
                      "n": 196,
                      "companies": 49,
                      "stats": {
                        "n": 196,
                        "p10": 216000,
                        "p25": 245000,
                        "median": 279500,
                        "p75": 335000,
                        "p90": 423000,
                        "medMin": 238300,
                        "medMax": 322000
                      },
                      "lca": {
                        "n": 1225,
                        "median": 250000,
                        "p25": 212100,
                        "p75": 280000
                      },
                      "url": "https://salaries.fru.dev/titles/engineering-manager"
                    }
                  ],
                  "total": 37,
                  "limit": 3,
                  "offset": 0,
                  "next": "/api/titles?limit=3&offset=3",
                  "window": [
                    "FY2025-Q4",
                    "FY2026-Q1"
                  ],
                  "note": "Base salary in USD per year. Posted ranges as the employer published them; H-1B wages from certified US DOL LCA filings. Not total compen..."
                }
              }
            }
          }
        }
      }
    },
    "/api/titles/{slug}": {
      "get": {
        "operationId": "get_title",
        "summary": "One title: pay by level, company and city, weekly and quarterly history",
        "description": "One title: pay by level, company and city, weekly and quarterly history. Returns the title summary, byLevel, byCompany and byCity stats with H-1B medians, the weekly posted series and H-1B medians by fiscal quarter.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Title slug, as in /titles/<slug> (see /api/titles)",
            "schema": {
              "type": "string"
            },
            "example": "ml-engineer"
          }
        ],
        "responses": {
          "200": {
            "description": "the title summary, byLevel, byCompany and byCity stats with H-1B medians, the weekly posted series and H-1B medians by fiscal quarter",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "title": {
                    "slug": "ml-engineer",
                    "name": "Machine Learning Engineer",
                    "family": "engineering",
                    "titlesUrl": "https://titles.fru.dev/titles/ml-engineer",
                    "n": 129,
                    "companies": 28,
                    "stats": {
                      "n": 129,
                      "p10": 211900,
                      "p25": 237500,
                      "median": 270000,
                      "p75": 302000,
                      "p90": 338291,
                      "medMin": 223000,
                      "medMax": 305000
                    },
                    "lca": {
                      "n": 1542,
                      "median": 226138,
                      "p25": 197293,
                      "p75": 250325
                    },
                    "url": "https://salaries.fru.dev/titles/ml-engineer"
                  },
                  "byLevel": [
                    {
                      "level": "entry",
                      "name": "Entry",
                      "stats": {
                        "n": 1,
                        "p10": 193000,
                        "p25": 193000,
                        "median": 193000,
                        "p75": 193000,
                        "p90": 193000,
                        "medMin": 170000,
                        "medMax": 216000
                      },
                      "h1b": {
                        "n": 9,
                        "median": 163322,
                        "p25": 158975,
                        "p75": 169541
                      }
                    },
                    {
                      "level": "mid",
                      "name": "Mid",
                      "stats": null,
                      "h1b": {
                        "n": 51,
                        "median": 174304,
                        "p25": 158954,
                        "p75": 187741
                      }
                    }
                  ],
                  "byCompany": [
                    {
                      "company": "waymo",
                      "name": "Waymo",
                      "stats": {
                        "n": 39,
                        "p10": 195000,
                        "p25": 238000,
                        "median": 238000,
                        "p75": 280500,
                        "p90": 282853,
                        "medMin": 213000,
                        "medMax": 263000
                      },
                      "h1b": {
                        "n": 22,
                        "median": 240000,
                        "p25": 205000,
                        "p75": 250000
                      }
                    },
                    {
                      "company": "zoox",
                      "name": "Zoox",
                      "stats": {
                        "n": 15,
                        "p10": 230500,
                        "p25": 253250,
                        "median": 302000,
                        "p75": 302000,
                        "p90": 323800,
                        "medMin": 254000,
                        "medMax": 350000
                      },
                      "h1b": {
                        "n": 8,
                        "median": 214118,
                        "p25": 197358,
                        "p75": 235127
                      }
                    }
                  ],
                  "byCity": [
                    {
                      "city": "sf-bay-area",
                      "name": "San Francisco Bay Area",
                      "stats": {
                        "n": 97,
                        "p10": 219500,
                        "p25": 238000,
                        "median": 270000,
                        "p75": 308520,
                        "p90": 366609,
                        "medMin": 225000,
                        "medMax": 305000
                      },
                      "h1b": {
                        "n": 1059,
                        "median": 233039,
                        "p25": 203963,
                        "p75": 257750
                      }
                    },
                    {
                      "city": "new-york",
                      "name": "New York City",
                      "stats": {
                        "n": 11,
                        "p10": 203500,
                        "p25": 221245,
                        "median": 265000,
                        "p75": 272160,
                        "p90": 272160,
                        "medMin": 200000,
                        "medMax": 300000
                      },
                      "h1b": {
                        "n": 95,
                        "median": 224100,
                        "p25": 188519,
                        "p75": 231351
                      }
                    }
                  ],
                  "weekly": [
                    {
                      "week": "2026-09-21",
                      "n": 129,
                      "p25": 237500,
                      "median": 270000,
                      "p75": 302000,
                      "medMin": 223000,
                      "medMax": 305000
                    }
                  ],
                  "h1bByQuarter": [
                    {
                      "q": "FY2025-Q1",
                      "n": 267,
                      "median": 220543,
                      "p25": 193000,
                      "p75": 236992
                    },
                    {
                      "q": "FY2025-Q2",
                      "n": 494,
                      "median": 197953,
                      "p25": 179131,
                      "p75": 227131
                    }
                  ],
                  "window": [
                    "FY2025-Q4",
                    "FY2026-Q1"
                  ],
                  "note": "Base salary in USD per year. Posted ranges as the employer published them; H-1B wages from certified US DOL LCA filings. Not total compen..."
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/api/companies": {
      "get": {
        "operationId": "list_companies",
        "summary": "Employers with their pay summary and dated posted ranges (for the companies.fru.dev registry)",
        "description": "Employers with their pay summary and dated posted ranges (for the companies.fru.dev registry). Returns companies with slug (companies.fru.dev slug), name, domain, page link, posted-range count and median, H-1B filings and median, and items: posted ranges with the date first seen, title and source posting.",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Only companies with a range first seen or changed at or after this date (YYYY-MM-DD); items are filtered the same way",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-01"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "companies with slug (companies.fru.dev slug), name, domain, page link, posted-range count and median, H-1B filings and median, and items: posted ranges with the date first seen, title and source posting",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "companies": [
                    {
                      "slug": "databricks",
                      "name": "Databricks",
                      "domain": "databricks.com",
                      "url": "https://salaries.fru.dev/companies/databricks",
                      "postedRanges": 298,
                      "medianPosted": 216104,
                      "h1bFilings": 420,
                      "medianH1b": 180913,
                      "updated": "2026-09-24",
                      "items": [
                        {
                          "type": "pay_range",
                          "date": "2026-09-24",
                          "title": "AI Engineer - Forward Deployed Engineering (AI FDE): $152,900 to $210,155",
                          "url": "https://salaries.fru.dev/companies/databricks",
                          "source": "https://databricks.com/company/careers/open-positions/job?gh_jid=8546367002"
                        },
                        {
                          "type": "pay_range",
                          "date": "2026-09-24",
                          "title": "AI Engineer - Forward Deployed Engineering (AI FDE), U.S. Public Sector (Federal Focus): $182,000 to $250,208",
                          "url": "https://salaries.fru.dev/companies/databricks",
                          "source": "https://databricks.com/company/careers/open-positions/job?gh_jid=8760167002"
                        }
                      ]
                    },
                    {
                      "slug": "openai",
                      "name": "OpenAI",
                      "domain": "openai.com",
                      "url": "https://salaries.fru.dev/companies/openai",
                      "postedRanges": 248,
                      "medianPosted": 355500,
                      "h1bFilings": 140,
                      "medianH1b": 325000,
                      "updated": "2026-09-24",
                      "items": [
                        {
                          "type": "pay_range",
                          "date": "2026-09-24",
                          "title": "Research Engineer: $250,000 to $445,000",
                          "url": "https://salaries.fru.dev/companies/openai",
                          "source": "https://jobs.ashbyhq.com/openai/240d459b-696d-43eb-8497-fab3e56ecd9b"
                        },
                        {
                          "type": "pay_range",
                          "date": "2026-09-24",
                          "title": "Research Engineer, Retrieval & Search, Applied Engineering: $293,000 to $585,000",
                          "url": "https://salaries.fru.dev/companies/openai",
                          "source": "https://jobs.ashbyhq.com/openai/7322d344-9325-4a92-8445-0a2c4e9272f8"
                        }
                      ]
                    }
                  ],
                  "total": 146,
                  "limit": 2,
                  "offset": 0,
                  "next": "/api/companies?since=2026-09-01&limit=2&offset=2",
                  "note": "Base salary in USD per year. Posted ranges as the employer published them; H-1B wages from certified US DOL LCA filings. Not total compen..."
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{slug}": {
      "get": {
        "operationId": "get_company",
        "summary": "One employer: pay by title and level, H-1B by title, open posted ranges",
        "description": "One employer: pay by title and level, H-1B by title, open posted ranges. Returns the company summary, byTitle and byLevel stats, h1bByTitle, weekly series, H-1B by quarter and up to 200 open postings with range and URL.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Company slug (companies.fru.dev)",
            "schema": {
              "type": "string"
            },
            "example": "databricks"
          }
        ],
        "responses": {
          "200": {
            "description": "the company summary, byTitle and byLevel stats, h1bByTitle, weekly series, H-1B by quarter and up to 200 open postings with range and URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "company": {
                    "slug": "databricks",
                    "name": "Databricks",
                    "domain": "databricks.com",
                    "industry": "data",
                    "board": true,
                    "policy": "ok",
                    "n": 298,
                    "open": 301,
                    "stats": {
                      "n": 298,
                      "p10": 187413,
                      "p25": 213750,
                      "median": 216104,
                      "p75": 234384,
                      "p90": 260993,
                      "medMin": 182000,
                      "medMax": 250208
                    },
                    "lca": {
                      "n": 420,
                      "median": 180913,
                      "p25": 159300,
                      "p75": 211629
                    },
                    "url": "https://salaries.fru.dev/companies/databricks",
                    "registry": "https://companies.fru.dev/companies/databricks"
                  },
                  "byTitle": [
                    {
                      "title": "software-engineer",
                      "name": "Software Engineer",
                      "stats": {
                        "n": 83,
                        "p10": 185750,
                        "p25": 195500,
                        "median": 221000,
                        "p75": 227500,
                        "p90": 265780,
                        "medMin": 190000,
                        "medMax": 248150
                      },
                      "h1b": {
                        "n": 273,
                        "median": 187505,
                        "p25": 171770,
                        "p75": 216971
                      }
                    },
                    {
                      "title": "forward-deployed-engineer",
                      "name": "Forward Deployed Engineer",
                      "stats": {
                        "n": 78,
                        "p10": 212325,
                        "p25": 216104,
                        "median": 216104,
                        "p75": 216104,
                        "p90": 232737,
                        "medMin": 182000,
                        "medMax": 250208
                      },
                      "h1b": {
                        "n": 2,
                        "median": 194723,
                        "p25": 184212,
                        "p75": 205235
                      }
                    }
                  ],
                  "byLevel": [
                    {
                      "level": "senior",
                      "name": "Senior",
                      "stats": {
                        "n": 131,
                        "p10": 185400,
                        "p25": 195500,
                        "median": 216104,
                        "p75": 216104,
                        "p90": 260200,
                        "medMin": 182000,
                        "medMax": 250208
                      }
                    },
                    {
                      "level": "staff",
                      "name": "Staff",
                      "stats": {
                        "n": 70,
                        "p10": 214078,
                        "p25": 222325,
                        "median": 226000,
                        "p75": 235175,
                        "p90": 265098,
                        "medMin": 192000,
                        "medMax": 260000
                      }
                    }
                  ],
                  "h1bByTitle": [
                    {
                      "title": "solutions-engineer",
                      "n": 127,
                      "median": 173987,
                      "p25": 157500,
                      "p75": 189291
                    },
                    {
                      "title": "software-engineer",
                      "n": 273,
                      "median": 187505,
                      "p25": 171770,
                      "p75": 216971
                    }
                  ],
                  "weekly": [
                    {
                      "week": "2026-09-21",
                      "n": 298,
                      "p25": 213750,
                      "median": 216104,
                      "p75": 234384,
                      "medMin": 182000,
                      "medMax": 250208
                    }
                  ],
                  "h1bByQuarter": [
                    {
                      "q": "FY2025-Q1",
                      "n": 57,
                      "median": 185826,
                      "p25": 168158,
                      "p75": 212267
                    },
                    {
                      "q": "FY2025-Q2",
                      "n": 68,
                      "median": 192413,
                      "p25": 170000,
                      "p75": 212267
                    }
                  ],
                  "postings": [
                    {
                      "id": "gh:databricks:7882009002",
                      "company": "databricks",
                      "companyName": "Databricks",
                      "title": "Staff Security Software Engineer, Agentic Security Engineering",
                      "role": "agent-engineer",
                      "level": "staff",
                      "metro": "remote-us",
                      "location": "Remote - California",
                      "min": 289200,
                      "max": 397650,
                      "currency": "USD",
                      "period": "year",
                      "firstSeen": "2026-09-24",
                      "url": "https://databricks.com/company/careers/open-positions/job?gh_jid=7882009002"
                    },
                    {
                      "id": "gh:databricks:8400559002",
                      "company": "databricks",
                      "companyName": "Databricks",
                      "title": "Principal Engineer, Authentication",
                      "role": "software-engineer",
                      "level": "principal",
                      "metro": "sf-bay-area",
                      "location": "Mountain View, California; San Francisco, California",
                      "min": 280000,
                      "max": 385000,
                      "currency": "USD",
                      "period": "year",
                      "firstSeen": "2026-09-24",
                      "url": "https://databricks.com/company/careers/open-positions/job?gh_jid=8400559002"
                    }
                  ],
                  "note": "Base salary in USD per year. Posted ranges as the employer published them; H-1B wages from certified US DOL LCA filings. Not total compen..."
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/api/cities": {
      "get": {
        "operationId": "list_cities",
        "summary": "Pay by US metro and remote",
        "description": "Pay by US metro and remote. Returns cities with slug, name, state, posted-range count, company count, stats and the H-1B summary.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "cities with slug, name, state, posted-range count, company count, stats and the H-1B summary",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "cities": [
                    {
                      "slug": "sf-bay-area",
                      "name": "San Francisco Bay Area",
                      "state": "CA",
                      "n": 1750,
                      "companies": 70,
                      "stats": {
                        "n": 1750,
                        "p10": 194250,
                        "p25": 220537,
                        "median": 265000,
                        "p75": 318570,
                        "p90": 372257,
                        "medMin": 213000,
                        "medMax": 306865
                      },
                      "lca": {
                        "n": 20432,
                        "median": 212319,
                        "p25": 186200,
                        "p75": 240296
                      },
                      "url": "https://salaries.fru.dev/cities/sf-bay-area"
                    },
                    {
                      "slug": "new-york",
                      "name": "New York City",
                      "state": "NY",
                      "n": 352,
                      "companies": 41,
                      "stats": {
                        "n": 352,
                        "p10": 167500,
                        "p25": 185713,
                        "median": 216104,
                        "p75": 259625,
                        "p90": 294820,
                        "medMin": 182000,
                        "medMax": 250208
                      },
                      "lca": {
                        "n": 3389,
                        "median": 193600,
                        "p25": 170000,
                        "p75": 222950
                      },
                      "url": "https://salaries.fru.dev/cities/new-york"
                    }
                  ],
                  "window": [
                    "FY2025-Q4",
                    "FY2026-Q1"
                  ],
                  "note": "Base salary in USD per year. Posted ranges as the employer published them; H-1B wages from certified US DOL LCA filings. Not total compen..."
                }
              }
            }
          }
        }
      }
    },
    "/api/postings": {
      "get": {
        "operationId": "list_postings",
        "summary": "Open postings with a stated range, newest first",
        "description": "Open postings with a stated range, newest first. Returns postings with company, title, role slug, level, city, location, min and max (USD per year), first seen date and the posting URL.",
        "parameters": [
          {
            "name": "company",
            "in": "query",
            "required": false,
            "description": "Company slug",
            "schema": {
              "type": "string"
            },
            "example": "openai"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "description": "Title slug (see /api/titles)",
            "schema": {
              "type": "string"
            },
            "example": "data-engineer"
          },
          {
            "name": "city",
            "in": "query",
            "required": false,
            "description": "City slug (see /api/cities)",
            "schema": {
              "type": "string"
            },
            "example": "new-york"
          },
          {
            "name": "level",
            "in": "query",
            "required": false,
            "description": "Level read from the job title",
            "schema": {
              "type": "string",
              "enum": [
                "entry",
                "mid",
                "senior",
                "staff",
                "principal",
                "manager",
                "director",
                "none"
              ]
            },
            "example": "staff"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the job title",
            "schema": {
              "type": "string"
            },
            "example": "platform"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "postings with company, title, role slug, level, city, location, min and max (USD per year), first seen date and the posting URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "postings": [
                    {
                      "id": "gh:anthropic:4973067008",
                      "company": "anthropic",
                      "companyName": "Anthropic",
                      "title": "Pre-training Data Infrastructure Engineer",
                      "role": "data-engineer",
                      "level": "none",
                      "metro": "sf-bay-area",
                      "location": "San Francisco, CA",
                      "min": 500000,
                      "max": 850000,
                      "currency": "USD",
                      "period": "year",
                      "firstSeen": "2026-09-24",
                      "url": "https://job-boards.greenhouse.io/anthropic/jobs/4973067008"
                    },
                    {
                      "id": "ashby:mercor:7d9d9439-848b-4fb4-b276-9efc71bb7148",
                      "company": "mercor",
                      "companyName": "Mercor",
                      "title": "Data Engineer",
                      "role": "data-engineer",
                      "level": "none",
                      "metro": "sf-bay-area",
                      "location": "San Francisco",
                      "min": 160000,
                      "max": 500000,
                      "currency": "USD",
                      "period": "year",
                      "firstSeen": "2026-09-24",
                      "url": "https://jobs.ashbyhq.com/mercor/7d9d9439-848b-4fb4-b276-9efc71bb7148"
                    }
                  ],
                  "total": 42,
                  "limit": 2,
                  "offset": 0,
                  "next": "/api/postings?title=data-engineer&limit=2&offset=2",
                  "note": "Base salary in USD per year. Posted ranges as the employer published them; H-1B wages from certified US DOL LCA filings. Not total compen..."
                }
              }
            }
          }
        }
      }
    },
    "/api/h1b": {
      "get": {
        "operationId": "list_h1b",
        "summary": "H-1B LCA wages by employer and title over the last four fiscal quarters",
        "description": "H-1B LCA wages by employer and title over the last four fiscal quarters. Returns rows with company and/or title, filings, median, p25 and p75 of the offered annual wage, the quarters covered and the DOL source files.",
        "parameters": [
          {
            "name": "company",
            "in": "query",
            "required": false,
            "description": "Company slug; alone, returns one row per company",
            "schema": {
              "type": "string"
            },
            "example": "google"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "description": "Title slug; alone, returns one row per title",
            "schema": {
              "type": "string"
            },
            "example": "data-scientist"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "rows with company and/or title, filings, median, p25 and p75 of the offered annual wage, the quarters covered and the DOL source files",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "h1b": [
                    {
                      "company": "google",
                      "title": "data-scientist",
                      "filings": 192,
                      "median": 200000,
                      "p25": 188000,
                      "p75": 222000
                    }
                  ],
                  "total": 1,
                  "limit": 200,
                  "offset": 0,
                  "next": null,
                  "window": [
                    "FY2025-Q4",
                    "FY2026-Q1"
                  ],
                  "files": [
                    {
                      "file": "LCA_Disclosure_Data_FY2025_Q1.xlsx",
                      "url": "https://www.dol.gov/sites/dolgov/files/ETA/oflc/pdfs/LCA_Disclosure_Data_FY2025_Q1.xlsx",
                      "first": "2024-10-01",
                      "last": "2024-12-31"
                    },
                    {
                      "file": "LCA_Disclosure_Data_FY2025_Q2.xlsx",
                      "url": "https://www.dol.gov/sites/dolgov/files/ETA/oflc/pdfs/LCA_Disclosure_Data_FY2025_Q2.xlsx",
                      "first": "2025-01-02",
                      "last": "2025-03-31"
                    }
                  ],
                  "note": "Certified full-time H-1B LCA filings, offered annual wage (midpoint when a range is stated), last four fiscal quarters on file."
                }
              }
            }
          }
        }
      }
    },
    "/api/changes": {
      "get": {
        "operationId": "list_changes",
        "summary": "The append-only history: ranges added, minimums and maximums changed, postings closed",
        "description": "The append-only history: ranges added, minimums and maximums changed, postings closed. Returns changes with time, posting id, company, title slug, field (added, salary_min, salary_max, title, closed, reopened), old and new value and the posting URL.",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Only changes at or after this date (YYYY-MM-DD)",
            "schema": {
              "type": "string"
            },
            "example": "2026-09-01"
          },
          {
            "name": "company",
            "in": "query",
            "required": false,
            "description": "Company slug",
            "schema": {
              "type": "string"
            },
            "example": "anthropic"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "description": "Title slug",
            "schema": {
              "type": "string"
            },
            "example": "research-engineer"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "changes with time, posting id, company, title slug, field (added, salary_min, salary_max, title, closed, reopened), old and new value and the posting URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "changes": [
                    {
                      "at": "2026-09-24 22:59:25",
                      "posting": "ashby:insitro:ec4a278a-dd78-4e9c-a203-87e3e2f59e60",
                      "company": "insitro",
                      "role": "data-scientist",
                      "field": "added",
                      "old": "",
                      "new": "Senior Data Scientist, CompBio",
                      "source": "https://jobs.ashbyhq.com/insitro/ec4a278a-dd78-4e9c-a203-87e3e2f59e60"
                    },
                    {
                      "at": "2026-09-24 22:59:25",
                      "posting": "ashby:insitro:ff6605ae-4961-4a06-b656-6d7dc665d990",
                      "company": "insitro",
                      "role": "software-engineer",
                      "field": "added",
                      "old": "",
                      "new": "Staff Software Engineer, Imaging",
                      "source": "https://jobs.ashbyhq.com/insitro/ff6605ae-4961-4a06-b656-6d7dc665d990"
                    }
                  ],
                  "total": 400,
                  "limit": 3,
                  "offset": 0,
                  "next": "/api/changes?since=2026-09-01&limit=3&offset=3",
                  "history": {
                    "changes": 3412,
                    "closed": 0,
                    "rangeEdits": 0,
                    "weeks": 1,
                    "since": "2026-09-24"
                  },
                  "note": "Newest 400 changes; the history is append-only (fields: added, salary_min, salary_max, title, closed, reopened)."
                }
              }
            }
          }
        }
      }
    },
    "/api/search": {
      "get": {
        "operationId": "search",
        "summary": "Search titles, companies and cities",
        "description": "Search titles, companies and cities. Returns up to 20 ranked results with title, link and one line.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "A title, company or city",
            "schema": {
              "type": "string"
            },
            "example": "machine learning"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Results, 1 to 20",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 20,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "up to 20 ranked results with title, link and one line",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "q": "machine learning",
                  "results": [
                    {
                      "id": "role:ml-engineer",
                      "group": "items",
                      "title": "Machine Learning Engineer salary",
                      "subtitle": "129 posted ranges · median $270k · H-1B $226k",
                      "href": "/titles/ml-engineer",
                      "keywords": [
                        "Machine Learning Engineer",
                        "ml engineer"
                      ],
                      "icon": "briefcase",
                      "boost": 20,
                      "score": 829
                    }
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}