# Track a company's hiring, news and funding with PredictLeads' API

PredictLeads returns one company's job openings, news events and financing events as three GET requests keyed by the company's domain. Each read is a flat price per response, whatever `limit` you set: job openings $0.04, news events $0.04, financing events $0.04. Send the request, pay the 402 price quote over x402 or MPP, retry it, and compare the result with your last read to find what changed.

## At a glance

- **Endpoints:** `GET https://agents.predictleads.com/zcj/5tvbupo1gvvn/api/v3/companies/{domain}/job_openings`, `.../news_events` and `.../financing_events`, one company per request
- **Query:** `limit` on all three. Job openings also take `active_only`, `location`, `categories`, `first_seen_at_from`, `first_seen_at_until`, `last_seen_at_from` and `last_seen_at_until`. Financing events also take `first_seen_at_from` and `first_seen_at_until`.
- **Price per read:** $0.04 (jobs), $0.04 (news), $0.04 (funding)
- **Search across companies:** discover endpoints, priced per record, for example $0.04
- **Payment:** a 402 is the price quote, which you pay and retry. Paying per read needs no account and no API key.
- **Response:** JSON with `data` (the records), `included` (the referenced companies) and `meta`
- **Full purchase flow:** [the buyer skill](https://agents.predictleads.com/zcj/5tvbupo1gvvn/SKILL.md)

## Read one account's hiring, news and funding

1. Request the company's active job openings:

   ```bash
   curl -si "https://agents.predictleads.com/zcj/5tvbupo1gvvn/api/v3/companies/stripe.com/job_openings?active_only=true&limit=3"
   ```

   The storefront answers with a 402 price quote; pay it and retry the same request ([the buyer skill](https://agents.predictleads.com/zcj/5tvbupo1gvvn/SKILL.md) covers it). The example read paid $0.04 and returned three postings in `data`. Each posting carries `id`, `title`, `normalized_title`, `url`, `first_seen_at`, `last_seen_at`, `status`, `seniority`, `categories`, `onet_data`, `location`, `location_data`, `salary_data`, `contract_types`, `recruiter_data` and `description`.

2. Request the company's news events:

   ```bash
   curl -si "https://agents.predictleads.com/zcj/5tvbupo1gvvn/api/v3/companies/stripe.com/news_events?limit=3"
   ```

   Pay and retry the same way. The example read paid $0.04 and returned three events. Each event carries `id`, `category`, `headline`, `summary`, `found_at`, `first_seen_at`, `confidence`, `article_sentence`, `planning`, `contact`, `job_title`, `location` and `company1_importance`, along with a `most_relevant_source` relationship. For leadership categories, `contact` holds a person's name.

3. Request the company's financing events:

   ```bash
   curl -si "https://agents.predictleads.com/zcj/5tvbupo1gvvn/api/v3/companies/stripe.com/financing_events?limit=3"
   ```

   The example read paid $0.04 and returned three events. One of them reads as follows:

   ```json
   {
     "type": "financing_event",
     "attributes": {
       "effective_date": "2023-03-15",
       "found_at": "2023-03-13T07:03:10+01:00",
       "categories": ["venture"],
       "financing_type": "funding round",
       "financing_type_normalized": null,
       "amount_normalized": 6500000000,
       "source_urls": ["https://www.cnbc.com/[path]"]
     },
     "relationships": {"investors": {"data": []}}
   }
   ```

   `amount` holds the figure as written in the source, and `amount_normalized` holds it as an integer in USD. `financing_type_normalized` is null when no normalized value is available, so read `categories` as well.

4. Store each record's `id` and the date of the read. The next read is compared against them.

## Watch for change between reads

| Change | Next request | New when |
| --- | --- | --- |
| New roles | `job_openings?first_seen_at_from=<last read date>` | any record is returned |
| Closed roles | `job_openings?active_only=true` | a stored `id` is missing |
| New news | `news_events` | the `id` is not stored and `first_seen_at` is after the last read |
| New funding | `financing_events?first_seen_at_from=<last read date>` | any record is returned |

`first_seen_at` on a news event is when PredictLeads first saw the evidence. `found_at` is when the article was published. Use `first_seen_at` to decide whether an event is new since your last read. A news event's `category` names the kind of change:

| Change to watch | `category` values |
| --- | --- |
| Leadership | `hires`, `leaves`, `promotes`, `retires_from` |
| Acquisitions | `acquires`, `merges_with` |
| Headcount | `increases_headcount_by`, `decreases_headcount_by` |
| Funding | `receives_financing`, `goes_public` |
| Expansion | `expands_offices_to`, `opens_new_location`, `expands_facilities` |

## Search across companies

| Search | Request | Filters | Price |
| --- | --- | --- | --- |
| Roles by title, seniority or location | `GET https://agents.predictleads.com/zcj/5tvbupo1gvvn/api/v3/discover/job_openings` | `title`, `seniority`, `location`, `onet_codes`, `active_only`, `found_at_from`, `limit` | $0.04 |
| Funding by round type | `GET https://agents.predictleads.com/zcj/5tvbupo1gvvn/api/v3/discover/financing_events` | `financing_types_normalized`, `company_location`, `company_sizes`, `company_naics_codes`, `first_seen_at_from`, `first_seen_at_until`, `limit` | $0.04 |

```bash
curl -si "https://agents.predictleads.com/zcj/5tvbupo1gvvn/api/v3/discover/job_openings?title=product%20manager&seniority=director&location=United%20States&limit=10"
```

Set `limit` on every discover call, because the default is 30 records. Ten job-opening records cost $0.40. With `active_only=true`, discover returns openings that are not closed, were last seen within five days and were found in the last year.

## Limits

- A company read is billed per response, so `limit=1000` costs the same as `limit=3`. Discover calls are billed per record.
- Each company read takes one domain. Watching 50 accounts across all three datasets costs $6 per pass.
- A single read is below the card floor of $0.50, so to pay by card, buy prepaid Credits (from $0.50 by card) and draw each read from the balance; [the buyer skill](https://agents.predictleads.com/zcj/5tvbupo1gvvn/SKILL.md) covers buying them.
- A 402 you have not paid charges nothing, so it is safe to stop there.
- `meta.count` appears only when you send `page`.

## Errors

| Response | Meaning | Action |
| --- | --- | --- |
| `402` with a `payment` block | The price quote | Pay and retry, or stop |
| `settlement_failed` | The payment did not settle. `settlementReason` says why. | Fix the wallet, then send a fresh request |
| `404` | No record for that domain | Check the domain |
| `429` | Too many requests | Wait the `Retry-After` seconds, then retry |
| `401 bearer_required` | A Credits purchase needs an agent identity | Register at [auth.md](https://agents.predictleads.com/zcj/5tvbupo1gvvn/auth.md), or pay per read |
| `usage_exhausted` | The Credits balance is used up | Top up with `POST https://agents.predictleads.com/zcj/5tvbupo1gvvn/extend` |

## Frequently asked questions

### Is there a company job openings API without an API key?

Yes. Pay-per-read needs no account, signup or upstream key: each read is paid on its own by settling the 402 over x402 or MPP. Prepaid Credits need a bearer credential, which the storefront issues.

### How much does it cost to check one account for hiring, news and funding signals?

Three reads, one per dataset, cost $0.12 per check, however many records each read returns.

### Can I watch only hires or acquisitions?

Each news event's `category` names the change, so you can keep the events whose category is `hires` or `acquires` and drop the rest.

### What does an empty job openings read mean?

When an `active_only=true` read returns no openings, check `meta.no_active_openings_confirmed`. `true` means the company's jobs page confirmed it has no openings. `false` means the page did not confirm it.

## Keep reading

- [Buyer skill](https://agents.predictleads.com/zcj/5tvbupo1gvvn/SKILL.md): the full purchase flow
- [How to pay](https://agents.predictleads.com/zcj/5tvbupo1gvvn/payment.md): rails, Credits and top-ups
- [Error reference](https://agents.predictleads.com/zcj/5tvbupo1gvvn/errors.md): every error code
- [Job Openings reference](https://agents.predictleads.com/zcj/5tvbupo1gvvn/services/job-openings/openapi.json)
- [Financing Events reference](https://agents.predictleads.com/zcj/5tvbupo1gvvn/services/financing-events/openapi.json)

---

Updated 2026-10-28. All PredictLeads guides: https://agents.predictleads.com/guides.md. Storefront: https://agents.predictleads.com/zcj/5tvbupo1gvvn/llms.txt.
