{
  "openapi": "3.1.0",
  "info": {
    "title": "Salary Benchmarks API",
    "version": "1.0.0",
    "description": "BLS wage benchmarks for every US occupation by state and metro: mean, median and percentiles.\n\nUS salary benchmarks by occupation and location from the Bureau of Labor Statistics' May 2025 Occupational Employment and Wage Statistics survey — the wage data every HR platform, job board and compensation tool builds on, self-hosted: 236,120 benchmark cells covering every SOC occupation nationally, per state and per metro area. Each cell carries employment, mean wages, and the full distribution — 10th, 25th, median, 75th and 90th percentiles, both hourly and annual — plus job concentration (per 1,000 employed, location quotient). One call answers \"what do Software Developers earn?\" (nationally: $135,980 median, $214,670 at p90, with the top-paying metros attached) or \"what's the going rate in Austin?\" ($134,120). Filter by occupation, area or area type; rank by median, p90 or employment; find SOC codes and area codes by name. SOC codes accepted with or without the dash. Survey data is public domain and refreshes with the annual spring release. Built for HR tech, job boards, offer benchmarking, relocation calculators and market research. Self-hosted — no third-party calls at request time.",
    "contact": {
      "name": "Data and APIs",
      "url": "https://dataandapis.com/contact"
    },
    "termsOfService": "https://dataandapis.com/terms-of-service",
    "license": {
      "name": "Data and APIs Terms of Service",
      "url": "https://dataandapis.com/terms-of-service"
    },
    "x-logo": {
      "url": "https://dataandapis.com/images/salary-benchmarks.webp"
    }
  },
  "externalDocs": {
    "description": "Documentation, live tester and pricing",
    "url": "https://dataandapis.com/apis/salary-benchmarks"
  },
  "servers": [
    {
      "url": "https://api-salary-benchmarks.dataandapis.com"
    }
  ],
  "tags": [
    {
      "name": "Business",
      "description": "Salary Benchmarks API belongs to the Business category of the Data and APIs catalog."
    }
  ],
  "paths": {
    "/v1/sources": {
      "get": {
        "operationId": "dataSources",
        "summary": "Data Sources",
        "description": "Data Sources endpoint of the Salary Benchmarks API. Costs 1 token per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/salary-benchmarks/data-sources"
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "count": 1,
                  "sources": [
                    {
                      "slug": "bls-oews",
                      "name": "BLS Occupational Employment and Wage Statistics (May 2025)",
                      "publisher": "US Bureau of Labor Statistics",
                      "licence": "US Government work - public domain",
                      "source_url": "https://www.bls.gov/oes/",
                      "file_url": "https://download.bls.gov/pub/time.series/oe/oe.data.1.AllData",
                      "cadence": "annual (spring release)",
                      "record_count": 236120,
                      "retrieved_at": "2026-09-02"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/v1/wages/national/{soc}": {
      "get": {
        "operationId": "nationalBenchmark",
        "summary": "National Benchmark",
        "description": "National Benchmark endpoint of the Salary Benchmarks API. Costs 1 token per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/salary-benchmarks/national-benchmark"
        },
        "parameters": [
          {
            "name": "soc",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "15-1252"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "area": {
                    "code": "0000000",
                    "name": "National",
                    "type": "national"
                  },
                  "occupation": {
                    "code": "15-1252",
                    "title": "Software Developers"
                  },
                  "year": 2025,
                  "employment": 1687890,
                  "wages": {
                    "hourly": {
                      "mean": 71.2,
                      "p10": 39.64,
                      "p25": 50.58,
                      "median": 65.38,
                      "p75": 82.68,
                      "p90": 103.21
                    },
                    "annual": {
                      "mean": 148100,
                      "p10": 82460,
                      "p25": 105210,
                      "median": 135980,
                      "p75": 171980,
                      "p90": 214670
                    }
                  },
                  "emp_per_1000": null,
                  "location_quotient": null,
                  "top_paying_metros": [
                    {
                      "area": "San Jose-Sunnyvale-Santa Clara, CA",
                      "annual_median": 213110
                    },
                    {
                      "area": "San Francisco-Oakland-Fremont, CA",
                      "annual_median": 186640
                    },
                    {
                      "area": "Seattle-Tacoma-Bellevue, WA",
                      "annual_median": 167280
                    },
                    {
                      "area": "New York-Newark-Jersey City, NY-NJ",
                      "annual_median": 166830
                    },
                    {
                      "area": "Boston-Cambridge-Newton, MA-NH",
                      "annual_median": 166090
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/v1/areas": {
      "get": {
        "operationId": "searchAreas",
        "summary": "Search Areas",
        "description": "Search Areas endpoint of the Salary Benchmarks API. Costs 1 token per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/salary-benchmarks/search-areas"
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Austin"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "metro"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "count": 1,
                  "areas": [
                    {
                      "code": "0012420",
                      "name": "Austin-Round Rock-San Marcos, TX",
                      "area_type": "metro"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/v1/occupations": {
      "get": {
        "operationId": "searchOccupations",
        "summary": "Search Occupations",
        "description": "Search Occupations endpoint of the Salary Benchmarks API. Costs 1 token per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/salary-benchmarks/search-occupations"
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "majors",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "false"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "nurse"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "count": 6,
                  "occupations": [
                    {
                      "code": "29-1141",
                      "title": "Registered Nurses",
                      "major_group": false
                    },
                    {
                      "code": "29-1151",
                      "title": "Nurse Anesthetists",
                      "major_group": false
                    },
                    {
                      "code": "29-1161",
                      "title": "Nurse Midwives",
                      "major_group": false
                    },
                    {
                      "code": "29-1171",
                      "title": "Nurse Practitioners",
                      "major_group": false
                    },
                    {
                      "code": "29-2061",
                      "title": "Licensed Practical and Licensed Vocational Nurses",
                      "major_group": false
                    },
                    {
                      "code": "45-2092",
                      "title": "Farmworkers and Laborers, Crop, Nursery, and Greenhouse",
                      "major_group": false
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/v1/wages": {
      "get": {
        "operationId": "searchWages",
        "summary": "Search Wages",
        "description": "Search Wages endpoint of the Salary Benchmarks API. Costs 1 token per call.",
        "externalDocs": {
          "url": "https://dataandapis.com/apis/salary-benchmarks/search-wages"
        },
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "area_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "metro"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "20"
          },
          {
            "name": "min_annual_median",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "100000"
          },
          {
            "name": "occupation",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "15-1252"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "1"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "median"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "ok": true,
                  "total": 453,
                  "page": 1,
                  "limit": 20,
                  "count": 3,
                  "results": [
                    {
                      "area": {
                        "code": "0041940",
                        "name": "San Jose-Sunnyvale-Santa Clara, CA",
                        "type": "metro"
                      },
                      "occupation": {
                        "code": "15-1252",
                        "title": "Software Developers"
                      },
                      "year": 2025,
                      "employment": 87350,
                      "wages": {
                        "hourly": {
                          "mean": 106.59,
                          "p10": 66.55,
                          "p25": 83.49,
                          "median": 102.46,
                          "p75": 108.69,
                          "p90": 139.02
                        },
                        "annual": {
                          "mean": 221710,
                          "p10": 138420,
                          "p25": 173650,
                          "median": 213110,
                          "p75": 226080,
                          "p90": 289150
                        }
                      },
                      "emp_per_1000": 76.96,
                      "location_quotient": 7.09
                    },
                    {
                      "area": {
                        "code": "0041860",
                        "name": "San Francisco-Oakland-Fremont, CA",
                        "type": "metro"
                      },
                      "occupation": {
                        "code": "15-1252",
                        "title": "Software Developers"
                      },
                      "year": 2025,
                      "employment": 69030,
                      "wages": {
                        "hourly": {
                          "mean": 93,
                          "p10": 61.58,
                          "p25": 78.61,
                          "median": 89.73,
                          "p75": 105.61,
                          "p90": 131.44
                        },
                        "annual": {
                          "mean": 193430,
                          "p10": 128090,
                          "p25": 163500,
                          "median": 186640,
                          "p75": 219670,
                          "p90": 273400
                        }
                      },
                      "emp_per_1000": 29.08,
                      "location_quotient": 2.68
                    },
                    {
                      "area": {
                        "code": "0042660",
                        "name": "Seattle-Tacoma-Bellevue, WA",
                        "type": "metro"
                      },
                      "occupation": {
                        "code": "15-1252",
                        "title": "Software Developers"
                      },
                      "year": 2025,
                      "employment": 92770,
                      "wages": {
                        "hourly": {
                          "mean": 84.09,
                          "p10": 47.69,
                          "p25": 63.85,
                          "median": 80.42,
                          "p75": 101.86,
                          "p90": 124.02
                        },
                        "annual": {
                          "mean": 174920,
                          "p10": 99190,
                          "p25": 132800,
                          "median": 167280,
                          "p75": 211860,
                          "p90": 257960
                        }
                      },
                      "emp_per_1000": 44.47,
                      "location_quotient": 4.1
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "Subscription past due; the response carries a payment_url"
          },
          "429": {
            "description": "Monthly token allowance exhausted"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Key",
        "description": "Create a free key at https://dataandapis.com/sign-up. 500 tokens a month on the Free plan; this API costs 1 token per call."
      }
    }
  },
  "security": [
    {
      "ApiKey": []
    }
  ]
}