# OSHA Inspections Search via 2s.io

> OSHA Inspections Search via 2s.io is a paid API for AI agents from 2s.io, paid per call via x402, $0.0012/call, status unknown (last checked 2026-09-14).

Search and filter ~5 million historical OSHA workplace inspection records from the US Department of Labor Open Data Portal by state, city, zip, or establishment name.

## Facts

- Endpoint: GET https://2s.io/api/gov/osha-inspections
- Price: $0.0012/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/2s-io-86c1f432
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_DB_5TtUvgI45eNUeoq2pW

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability 2s-io-86c1f432
```

Example prompt: Can you pull up OSHA inspection records for meat packing plants in Texas — search by establishment name containing 'Tyson' and show me the activity number, establishment name, address, open and close dates, and NAICS code for the 50 most recent inspections?

## When to prefer this

Use this endpoint when you need to search OSHA workplace inspection records programmatically by geographic area (state, city, zip) or by establishment name, especially for workplace safety research, compliance checking, or investigative journalism. Prefer this over manual DOL portal searches when you need filtered, structured, machine-readable results with flexible OData-style clauses.

## Known failure modes

- Invalid state code returns no results or validation error
- OData filter syntax error causes a 400 bad request
- Overly broad queries may hit the 100-row limit requiring pagination with offset
- No matching records for a given establishment name substring returns empty result set
- Payment not included or insufficient USDC triggers 402 payment required

## How this service works

Search OSHA inspection records via the US Department of Labor Open Data Portal (~5M historical inspections). Filter by US state (2-letter), city, zip, or establishment-name substring (estabName, case-insensitive). Optional `filter` accepts raw OData-style clauses (joined with AND); `fields` selects columns; `sort` sorts (prefix with `-` for desc). Each row carries activity number, reporting id, establishment name + full site address, owner type/code, advance-notice flag, safety/health type, SIC + NAICS industry codes, open + close dates, host establishment number, union status. Backbone of workplace-safety + investigative-journalism agents.

## Output

A paginated list of OSHA inspection records, each containing activity number, reporting ID, establishment name and full site address, owner type and code, advance-notice flag, safety/health type, SIC and NAICS industry codes, inspection open and close dates, host establishment number, and union status. Results are filterable and sortable.

## Example request

```json
{
 "input": {
  "type": "http",
  "method": "GET",
  "queryParams": {
   "limit": 10,
   "state": "ca"
  }
 }
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "queryParams"
   ],
   "properties": {
    "type": {
     "const": "http"
    },
    "method": {
     "const": "GET"
    },
    "queryParams": {
     "properties": {
      "zip": {
       "type": "string"
      },
      "city": {
       "type": "string"
      },
      "sort": {
       "type": "string",
       "description": "Column, prefix - for desc."
      },
      "limit": {
       "type": "integer",
       "default": 25,
       "maximum": 100,
       "minimum": 1
      },
      "state": {
       "type": "string",
       "description": "2-letter US state."
      },
      "fields": {
       "type": "string",
       "description": "CSV of columns to return."
      },
      "filter": {
       "type": "string",
       "description": "Raw OData filter clause (combined with AND)."
      },
      "offset": {
       "type": "integer",
       "default": 0,
       "minimum": 0
      },
      "estabName": {
       "type": "string",
       "description": "Substring of establishment name."
      }
     }
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/2s-io-86c1f432/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 2s.io](https://www.zero.xyz/host/2s.io/llms.txt)
