# Track funding, acquisitions and hiring with Bytemine's signals API

Bytemine's Signals API returns company buying triggers as records: funding rounds, acquisitions, a company's hiring trends and its open job postings. Each record returned is a charge ($0.01 per record for funding, $0.01 per record for acquisitions, $0.01 per record for hiring, $0.01 per posting for postings), so a market watch narrows by date and industry and sets `limit`, and a single-account watch asks by domain. Send a JSON `POST` to the storefront and pay the request's 402 price quote from a wallet; no account or API key is needed.

## At a glance

- **Endpoints:** `POST https://agents.bytemine.ai/zcj/as3q6b8x3hr0/functions/v1/api-gateway/signals/funding`, `.../signals/acquisitions`, `.../v1/signals/hiring`, `.../v1/signals/job-postings`
- **Body:** JSON filters. `limit` on funding, acquisitions and job postings. One of `domain`, `company` or `linkedin` on hiring.
- **Price:** per record returned: funding $0.01, acquisitions $0.01, hiring $0.01, postings $0.01
- **Free:** count queries, sent with `count`
- **Payment:** each request answers with a 402 price quote, paid from a wallet over x402 or MPP. Card pays a pay-as-you-go call only at $0.50 or more.
- **Response:** JSON. Funding and acquisitions return `data` and `pagination`. Job postings return `total` and `postings`.
- **Limits:** `limit` defaults to 20 on funding and acquisitions and 25 on postings, with a maximum of 100. Hiring covers one company per call.
- **Full purchase flow:** [the buyer skill](https://agents.bytemine.ai/zcj/as3q6b8x3hr0/SKILL.md)

## Choose the signal

| Trigger to watch | Endpoint path | Main filters |
| --- | --- | --- |
| New funding in a market | `/functions/v1/api-gateway/signals/funding` | `industry`, `countries`, `dateFrom`/`dateTo` or `date_preset`, `round`, `amount_min`/`amount_max`, `sort_by` |
| Acquisitions in a market | `/functions/v1/api-gateway/signals/acquisitions` | `industry`, `countries`, `date_preset`, `acquiring_company`, `amount_min`, `sort_by` |
| One company's hiring push | `/functions/v1/api-gateway/v1/signals/hiring` | `domain`, `company` or `linkedin`, `months`, `include_postings` |
| Open roles | `/functions/v1/api-gateway/v1/signals/job-postings` | `domain` or `company`, `title`, `team`, `seniority`, `location`, `remote_only`, `days` |

## Search funding rounds by industry and date

1. Size the search for free. On this route `count` is the string `"true"`:

   ```bash
   curl -s -X POST https://agents.bytemine.ai/zcj/as3q6b8x3hr0/functions/v1/api-gateway/signals/funding \
     -H 'Content-Type: application/json' \
     -d '{"industry": "Software", "date_preset": "last_7d", "count": "true"}'
   ```

2. Send the search with `limit` set:

   ```bash
   curl -s -X POST https://agents.bytemine.ai/zcj/as3q6b8x3hr0/functions/v1/api-gateway/signals/funding \
     -H 'Content-Type: application/json' \
     -d '{"limit": 3, "industry": "Software", "sort_by": "occurred_at"}'
   ```

   The storefront answers with a 402 price quote.

3. Pay the 402 with an x402 or MPP client, which retries the same request with the proof attached. This example returned three software rounds and paid $0.03.

4. Read the records. Each record in `data` carries `companyName`, `companyWebsite`, `companyIndustry`, `roundType`, `amount`, `currency`, `announcedDate`, `occurredAt`, `discoveredAt` and `verificationStatus`. It also carries `investors`, a list whose entries have `name`, `type` and `isLead`, and `sources`, a list whose entries have `url`, `sourceType`, `title` and `publishedAt`.

`industry` and `countries` take comma-separated values. `round` takes comma-separated round types, such as `Seed,Series A`. Amounts are in USD cents. `date_preset` (`last_7d`, `last_30d`, `this_quarter`, `last_year`) overrides `dateFrom` and `dateTo`.

## Search acquisitions and M&A deals

```bash
curl -s -X POST https://agents.bytemine.ai/zcj/as3q6b8x3hr0/functions/v1/api-gateway/signals/acquisitions \
  -H 'Content-Type: application/json' \
  -d '{"industry": "Software", "countries": "US", "date_preset": "last_90d", "sort_by": "occurred_at", "sort_order": "desc", "limit": 10}'
```

`countries` filters on the acquired company. Each record has `companyName` for the acquired company, `acquiringCompany`, `amount`, `announcedDate` and `sources`. Send `"count": "true"` for a free count.

## Get a company's hiring trends

```bash
curl -s -X POST https://agents.bytemine.ai/zcj/as3q6b8x3hr0/functions/v1/api-gateway/v1/signals/hiring \
  -H 'Content-Type: application/json' \
  -d '{"domain": "example.com", "months": 12, "include_postings": false}'
```

`months` runs from 3 to 36 and defaults to 12. `include_postings` defaults to true, which adds the company's live open roles. The response has `found`, `company`, `headcount`, `trends`, `functions`, `seniorities`, `highlights` and `postings`.

## Search open job postings by company

```bash
curl -s -X POST https://agents.bytemine.ai/zcj/as3q6b8x3hr0/functions/v1/api-gateway/v1/signals/job-postings \
  -H 'Content-Type: application/json' \
  -d '{"domain": "example.com", "title": "engineer", "days": 30, "limit": 10}'
```

`domain` is an exact match and `company` is a partial match. `days` runs from 1 to 90 and defaults to 30. On this route `count` is the boolean `true`. An example request with one `domain` and `limit` 3 paid $0.03, and its response is a JSON object with `total`, `days`, `limit`, `offset` and `postings`. Each posting has `id`, `url`, `title`, `team`, `seniority`, `location`, `is_remote`, `employment_type`, `posted_at`, `company_name` and `domain`.

## Keep a watch loop cheap

| Situation | What to send |
| --- | --- |
| Before any paid search | The same filters with `count`, which is free |
| Watching a market on a schedule | A `date_preset` that matches the loop interval, `sort_by: "occurred_at"`, `sort_order: "desc"` and a small `limit` |
| Watching one account | Its `domain` on hiring and job postings |
| Needing more than one page | `page` (funding) or `offset` (postings), each page billed for the records it returns |

## What is charged

- Each record returned is billed. A count query is free.
- The 402 can be a ceiling: the most the call can cost, with only the actual records charged. Each paid response carries a `zc-billing` header with `authorizedUsd` and `chargedUsd`.
- Card pays a pay-as-you-go call only at $0.50 or more. For smaller searches, pay over x402 or MPP, or draw on Credits, which start at $0.50 ($0.50 by card) and need an agent credential from [auth.md](https://agents.bytemine.ai/zcj/as3q6b8x3hr0/auth.md).
- Hiring covers one company per call.

## Errors

| Response | Meaning | Action |
| --- | --- | --- |
| `402` with a `payment` block | The price quote | Pay within your budget and retry, or stop |
| `400 invalid_request` | The body is malformed | Fix the JSON |
| `settlement_failed` | The payment did not settle. `settlementReason` gives the reason. | Fix the wallet, then send a fresh request |
| `usage_exhausted` | The Credits balance is used up | Top up with `POST https://agents.bytemine.ai/zcj/as3q6b8x3hr0/extend` |
| `401 bearer_required` | A Credits purchase was sent without an agent credential | Register at [auth.md](https://agents.bytemine.ai/zcj/as3q6b8x3hr0/auth.md), or pay per call |

## Frequently asked questions

### How is the funding rounds API billed?

Per record returned, at $0.01. A search capped at `limit` 10 returns at most ten billable records, and the 402 states the amount before you pay.

### Can I see how many records match before paying?

Yes. Count queries are free. Send the same filters with `count` set to `"true"` on funding and acquisitions, or to `true` on job postings.

### How do I track hiring at one company?

Call the hiring route with the company's `domain` for its headcount trends, and the job postings route with the same `domain` for its open roles, filtered by `title`, `team` or `seniority`.

### Can I pay for a signals search by card?

A pay-as-you-go call can be paid by card only at $0.50 or more. Smaller searches settle over x402 or MPP, or draw on prepaid Credits, which can be bought by card from $0.50.

### Does the signals API need an API key?

No. Each call is paid through its 402 quote over a wallet rail. A bearer credential is needed only to buy Credits.

## Keep reading

- [Buyer skill](https://agents.bytemine.ai/zcj/as3q6b8x3hr0/SKILL.md): the full purchase flow
- [Signals API reference](https://agents.bytemine.ai/zcj/as3q6b8x3hr0/services/signals/openapi.json): every filter and field
- [How to pay](https://agents.bytemine.ai/zcj/as3q6b8x3hr0/payment.md): rails, Credits and ceiling pricing
- [Error reference](https://agents.bytemine.ai/zcj/as3q6b8x3hr0/errors.md): every error code

---

Updated 2026-10-16. All Bytemine guides: https://agents.bytemine.ai/guides.md. Storefront: https://agents.bytemine.ai/zcj/as3q6b8x3hr0/llms.txt.
