JobsPipe Layoffs API

US WARN Act layoff and closure notices, with the company each names.

Operations 1

GET /v1/layoffs Search WARN Act layoff notices #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/jobspipe:jobspipe-layoffs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

jobspipe-layoffs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Jobspipe Layoffs API
  version: 1.0.0
  description: 'Operations tagged Layoffs across 2 of this provider''s published API definitions: jobspipe-dev-openapi.json, jobspipe-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.jobspipe.dev
tags:
- name: Layoffs
  description: US WARN Act layoff and closure notices, with the company each names.
paths:
  /v1/layoffs:
    get:
      operationId: searchLayoffs
      summary: Search WARN Act layoff notices
      tags:
      - Layoffs
      x-consequence: read-only
      x-side-effects: consumes 1 credit per notice returned; a notice already paid for this calendar month is free, and an empty page costs nothing
      security:
      - apiKey: []
      - oidc:
        - jobs:read
      description: US WARN Act notices of mass layoffs and closures, as state labor agencies publish them, newest first, each with the company it names when that company is matched with confidence. Filter by state, company (key or domain), notice date, employees affected and kind.
      parameters:
      - name: state
        in: query
        required: false
        schema:
          type: string
          pattern: ^[A-Za-z]{2}(,[A-Za-z]{2})*$
          example: CA,TX
        description: US states by two-letter postal code, comma-separated.
      - name: company
        in: query
        required: false
        schema:
          type: string
          example: google.com
        description: A company's key (digits) or its website domain. Only notices matched to that company are returned.
      - name: notice_date_gte
        in: query
        required: false
        schema:
          type: string
          format: date
        description: Notices dated on or after this day.
      - name: notice_date_lte
        in: query
        required: false
        schema:
          type: string
          format: date
        description: Notices dated on or before this day.
      - name: min_employees
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
        description: Only notices affecting at least this many employees; a notice without a count is left out.
      - name: kind
        in: query
        required: false
        schema:
          type: string
          enum:
          - layoff
          - closure
          - unknown
        description: layoff, closure, or unknown.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 25
        description: Notices per page.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          maximum: 10000
          default: 0
        description: Notices to skip; pass the previous page's next_offset.
      responses:
        '200':
          description: A page of notices.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LayoffsResponse'
              example:
                data:
                - id: '8813620347113906411'
                  state: CA
                  employer: Northwind Labs, Inc.
                  address: 500 Howard St
                  city: San Francisco
                  county: San Francisco
                  zip: '94105'
                  notice_date: '2026-10-14'
                  effective_date: '2026-12-13'
                  employees: 142
                  kind: layoff
                  company:
                    key: '3837186692681720328'
                    name: Northwind Labs
                    domain: northwindlabs.com
                metadata:
                  total_results: 1
                  returned_results: 1
                  next_offset: null
                  credits_charged: 1
                  notices_already_paid: 0
        '400':
          description: Invalid filters. Consumes no credits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Monthly request quota exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Per-second rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitErrorResponse'
        '502':
          description: The backend failed. Consumes no credits; safe to retry with backoff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '504':
          description: Timed out. Consumes no credits; retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    servers:
    - url: https://api.jobspipe.dev
components:
  schemas:
    LayoffNotice:
      type: object
      required:
      - id
      - state
      - employer
      - address
      - city
      - county
      - zip
      - notice_date
      - effective_date
      - employees
      - kind
      - company
      properties:
        id:
          type: string
          description: The notice's id; stable when the state amends the notice.
        state:
          type: string
          description: Two-letter postal code of the state that published the notice.
        employer:
          type: string
          description: The employer as named on the notice.
        address:
          type:
          - string
          - 'null'
        city:
          type:
          - string
          - 'null'
        county:
          type:
          - string
          - 'null'
        zip:
          type:
          - string
          - 'null'
        notice_date:
          type:
          - string
          - 'null'
          format: date
          description: The day the notice was given or received.
        effective_date:
          type:
          - string
          - 'null'
          format: date
          description: The day the layoff or closure takes effect, when stated.
        employees:
          type:
          - integer
          - 'null'
          description: Employees affected, when stated.
        kind:
          type: string
          enum:
          - layoff
          - closure
          - unknown
          description: 'closure: the site or plant closes. unknown: the notice does not say.'
        company:
          oneOf:
          - type: object
            properties:
              key:
                type: string
                description: The company's key, for its company page or as company_key_or in job search.
              name:
                type: string
              domain:
                type:
                - string
                - 'null'
          - type: 'null'
          description: The company the notice names, when it is matched to the company with confidence; null otherwise.
    ErrorResponse:
      type: object
      required:
      - error
      properties:
        error:
          type: string
          description: 'Human-readable error message, e.g. "Invalid search filters: unknown filter: ''query''. Did you mean query -> job_title_or?". Not a stable machine-readable code; match on the HTTP status instead. A few stack-scan errors carry a short identifier such as missing_domain or invalid_domain.'
        message:
          type: string
          description: Additional detail. Present on 402 quota responses; other errors carry only error.
    LayoffsResponse:
      type: object
      required:
      - data
      - metadata
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/LayoffNotice'
          description: Newest notice first.
        metadata:
          type: object
          properties:
            total_results:
              type: integer
              description: Notices the filters match.
            returned_results:
              type: integer
            next_offset:
              type:
              - integer
              - 'null'
              description: The offset of the next page; null on the last page.
            credits_charged:
              type: integer
            notices_already_paid:
              type: integer
              description: Notices on this page already paid for this calendar month, so free.
            credits_remaining:
              type: integer
              description: Credits the account can still spend after this call. Absent for callers that are not metered.
            credits_allowance:
              type: integer
              description: 'What credits_remaining is measured against: the monthly allowance, or Free''s one-time grant.'
    RateLimitErrorResponse:
      type: object
      required:
      - error
      description: 'Sent with HTTP 429 when the per-second rate limit is exceeded. The response also carries Retry-After: 1 and the RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and RateLimit-Policy headers. A 429 costs no credit.'
      properties:
        error:
          type: string
          description: 'Human-readable message: "Rate limit exceeded".'
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: 'API key issued from the JobsPipe dashboard, prefixed jp_live_, sent as a bearer token in the Authorization header. Keys are read-only and scoped: jobs:read grants POST /v1/jobs/search, stack:read grants POST /v1/stack/scan. No scope grants write access to JobsPipe data.'
    oidc:
      type: openIdConnect
      openIdConnectUrl: https://jobspipe.dev/.well-known/openid-configuration
      description: 'OpenID Connect / OAuth 2.0 access via the JobsPipe authorization server. Supported scopes (also advertised in the protected-resource metadata at https://api.jobspipe.dev/.well-known/oauth-protected-resource): jobs:read - search normalized job postings; stack:read - run technology-stack scans.'
    bearerAuth:
      type: http
      scheme: bearer
      description: Your JobsPipe API key (starts with jp_live_).
x-refined-from:
- jobspipe-dev-openapi.json
- jobspipe-openapi.json
x-service-info:
  categories:
  - data
  - jobs
  - technographics
  docs:
    homepage: https://jobspipe.dev
    apiReference: https://docs.jobspipe.dev
    llms: https://jobspipe.dev/llms.txt