# Search job postings for hiring signals with BlitzAPI's Job Search API

BlitzAPI's Job Search API lists every open role at one company from its LinkedIn company URL, or searches postings across companies by title, location, seniority, posting date and employer. It costs $0.001, and a page that returns nothing costs nothing. Send `POST https://agents.blitz-api.ai/zcj/pngzg9m46c55/v2/jobs/company` or `POST https://agents.blitz-api.ai/zcj/pngzg9m46c55/v2/jobs/search` with `Authorization: Bearer <token>`, the agent credential the storefront issues, on a credential that holds Credits.

## At a glance

- **Endpoints:** `POST https://agents.blitz-api.ai/zcj/pngzg9m46c55/v2/jobs/company` for one company, `POST https://agents.blitz-api.ai/zcj/pngzg9m46c55/v2/jobs/search` across companies
- **Body:** JSON. `company_linkedin_url` is required on `/v2/jobs/company`. Optional `job` filters, `company` filters (search only), `max_results` (1 to 50, default 10) and `cursor`.
- **Price:** $0.001. A page with no results costs nothing.
- **Payment:** prepaid Credits, bought by card only, at least $0.60 per card purchase. No BlitzAPI account or API key.
- **Response:** `results` (postings), `cursor`, `total_results`, `results_length`, `max_results`, `fair_usage`
- **Limits:** up to 50 postings per page; per-second rate limit reported in `fair_usage.rate_limit`
- **Full purchase flow:** [the buyer skill](https://agents.blitz-api.ai/zcj/pngzg9m46c55/SKILL.md)

## List open roles at one company

An open posting shows what a company is hiring for. This procedure reads those postings for one account.

1. Get a credential that holds Credits. A call without a credential answers `401 bearer_required`, and a credential without Credits answers `403 plan_required`. [The buyer skill](https://agents.blitz-api.ai/zcj/pngzg9m46c55/SKILL.md) has the steps for registering the credential and buying Credits by card.

2. Send the company's LinkedIn URL:

   ```bash
   curl -s -X POST https://agents.blitz-api.ai/zcj/pngzg9m46c55/v2/jobs/company \
     -H "Authorization: Bearer $ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"company_linkedin_url": "https://www.linkedin.com/company/stripe", "max_results": 3}'
   ```

   The response has this shape:

   ```json
   {
     "results": [
       {
         "url": "<posting url>",
         "title": "<job title>",
         "location": {"city": "<city or null>", "country_code": "<ISO code>"},
         "ai_summary": "<summary of the role>",
         "date_posted": "<timestamp>",
         "company_name": "<company>",
         "company_linkedin_url": "<company LinkedIn URL>"
       }
     ],
     "cursor": "<next page cursor>",
     "total_results": 0,
     "results_length": 3,
     "max_results": 3
   }
   ```

   This example request returned three postings with those fields in 1.0 seconds and drew $0.003 from prepaid credit.

3. Read what the call drew. A credit-funded response carries a `zc-billing` header such as `{"status":"settled","fundingSource":"credit","chargedUsd":"<amount>","remainingCreditUsd":"<balance>"}`. `chargedUsd` is the debit for this request, and `remainingCreditUsd` is the balance left. A delivered response with no `zc-billing` header billed nothing.

4. Read `fair_usage` in the body. `records_used` is the records this request consumed, reconciled against the results returned. `request_id` identifies the request for support. `rate_limit.remaining_this_second` shows how many requests are left in the current second.

5. Page through the rest. Resend the same body with `"cursor"` set to the previous response's `cursor`. Each page draws only for the postings it returns. Stop when `cursor` comes back `null`.

## Search postings across companies

`POST https://agents.blitz-api.ai/zcj/pngzg9m46c55/v2/jobs/search` takes the same `job` filters plus `company` filters on the employer. This body asks for senior sales leadership roles in the US, posted in the last 30 days, at companies of 51 to 500 people, excluding staffing agencies:

```json
{
  "job": {
    "title": {"include": ["Head of Sales"]},
    "seniority": {"include": ["5-10", "10+"]},
    "date_posted": {"last_days": 30},
    "location": {"country_code": {"include": ["US"]}}
  },
  "company": {"size": {"include": ["51-200", "201-500"]}, "is_agency": false},
  "max_results": 25
}
```

A full page of 25 costs $0.025. Each posting carries `company_name` and `company_linkedin_url`, so you can pass any employer to `/v2/jobs/company` for its full list of roles.

## Choose the filters

| To find | Set |
| --- | --- |
| Roles with a title keyword | `job.title.include`, such as `["Account Executive"]` |
| An exact title | Wrap it in brackets: `["[Head of Sales]"]` |
| Recent postings | `job.date_posted.last_days`, 1 to 3650 |
| Seniority | `job.seniority.include`: `0-2`, `2-5`, `5-10`, `10+` (years of experience) |
| Where the job is | `job.location.country_code.include` (ISO alpha-2) or `job.location.city.include` |
| Contract type | `job.employment_type.include`: `FULL_TIME`, `PART_TIME`, `CONTRACTOR`, `TEMPORARY`, `INTERN`, `VOLUNTEER`, `PER_DIEM`, `OTHER` |
| Remote or on-site | `job.work_arrangement.include`: `On-site`, `Hybrid`, `Remote OK`, `Remote Solely` |
| A theme across the posting | `job.ai_keywords.include` |
| Employer size (search only) | `company.size.include`: `1-10` to `10001+`, or `company.employee_count` min and max |
| Employer industry or HQ (search only) | `company.industry.include`, `company.hq.country_code.include` |

## Boundaries

- Every call draws on prepaid Credits. There is no anonymous pay-per-call price.
- BlitzAPI accepts card payments only. Wallet payments over x402 or MPP stablecoins are not offered.
- `/v2/jobs/company` takes one company per request. Several companies are several requests.
- Buying Credits is the only payment. A call draws only for the postings it returns, and a `422` request does not run and draws nothing.

## Errors

| Response | Meaning | Action |
| --- | --- | --- |
| `401 bearer_required` | No agent credential on the call | Register one through [the buyer skill](https://agents.blitz-api.ai/zcj/pngzg9m46c55/SKILL.md) and retry with `Authorization: Bearer <token>` |
| `401 invalid_token` | The access token expired or did not verify | Exchange the stored assertion for a fresh token |
| `403 plan_required` | The credential holds no Credits | Buy Credits, then retry |
| `usage_exhausted` | The credit balance is used up | Top up with `POST https://agents.blitz-api.ai/zcj/pngzg9m46c55/extend` and `{"amountUsd": "..."}` |
| `422` | Unknown field or invalid value | Fix the field named in `errors[].field`; the message suggests the closest valid value |
| `429` | Rate limit exceeded | Wait, then retry |
| `503` | Service temporarily unavailable | Retry later with backoff |

## Frequently asked questions

### Is there a job postings API for AI agents that needs no API key?

Yes. Job Search is called through the storefront with an agent credential it issues, registered for free, and Credits bought by card. No BlitzAPI account or API key is needed.

### How much does it cost to list a company's open roles?

$0.001. A page of 50 postings costs $0.05, and a page with no postings costs nothing. Credits are bought by card from $0.60.

### How do I watch a company for new postings?

Send `/v2/jobs/company` on a schedule with `job.date_posted.last_days` set to the interval, such as `7`. Each run draws only for the postings it returns, so a quiet week costs nothing.

### Can I get a list of hiring companies instead of postings?

Yes, through Company Search. `POST https://agents.blitz-api.ai/zcj/pngzg9m46c55/v2/company/tam-by-jobs` takes job filters and returns the distinct companies hiring for the matching jobs, each with its count of matching jobs, at $0.001.

### Can I pay with a crypto wallet?

No. BlitzAPI takes card payments only, for Credits, through a hosted checkout or a shared payment token.

## Keep reading

- [The buyer skill](https://agents.blitz-api.ai/zcj/pngzg9m46c55/SKILL.md): registering a credential and buying Credits
- [Job Search API reference](https://agents.blitz-api.ai/zcj/pngzg9m46c55/services/job-search/openapi.json): every field and response
- [How to pay](https://agents.blitz-api.ai/zcj/pngzg9m46c55/payment.md): Credits, top-ups and the `zc-billing` header
- [Error reference](https://agents.blitz-api.ai/zcj/pngzg9m46c55/errors.md): every storefront error code

---

Updated 2026-10-22. All BlitzAPI guides: https://agents.blitz-api.ai/guides.md. Storefront: https://agents.blitz-api.ai/zcj/pngzg9m46c55/llms.txt.
