# Score accounts for buying intent with Bytemine's intent API

Bytemine's Buying Intent Score API returns one explainable 0-100 intent score per company, built from hiring, funding, technology and growth signals, with the component breakdown and reason codes behind it. Each company scored costs $0.01. Send `POST https://agents.bytemine.ai/zcj/j3pjqu3owwep/functions/v1/api-gateway/v1/intent/score` with domains to score known accounts, or with discovery filters to find in-market ones, and pay the request's 402 price quote.

## At a glance

- **Endpoint:** `POST https://agents.bytemine.ai/zcj/j3pjqu3owwep/functions/v1/api-gateway/v1/intent/score`
- **Score mode body:** `mode: "score"` with `domain` (one) or `domains` (a list)
- **Discover mode body:** `mode: "discover"` with `industry`, `location`, `min_score`, `limit` and an `icp` object
- **Price:** $0.01, billed per company scored
- **Payment:** each request answers with a 402 price quote, paid from a wallet over x402 or MPP. No account or API key is needed.
- **Response:** `companies[]`, each with `intent_score`, `tier`, `components`, `reason_codes` and `signals`
- **Limits:** `limit` is 1 to 25 companies per call, default 10. `days` is a 1 to 90 day lookback, default 30.
- **Full purchase flow:** [the buyer skill](https://agents.bytemine.ai/zcj/j3pjqu3owwep/SKILL.md)

## Score known accounts by domain

1. Send the request without payment:

   ```bash
   curl -s -X POST https://agents.bytemine.ai/zcj/j3pjqu3owwep/functions/v1/api-gateway/v1/intent/score \
     -H 'Content-Type: application/json' \
     -d '{"domain": "shopify.com", "mode": "score", "include_leadership_changes": false}'
   ```

   The storefront returns a 402 price quote, with the amount in `payment.amountUsd`.

2. Pay the 402 and retry the identical request with the proof attached. [The buyer skill](https://agents.bytemine.ai/zcj/j3pjqu3owwep/SKILL.md) has the steps. The example request above scored one company and paid $0.01.

3. Read `companies[]` from the 200 response. To score a list, replace `domain` with `"domains": ["<domain>", "<domain>"]`. Each domain is one company scored.

## Discover in-market companies by intent signals

Discover mode searches across the market instead of a list you supply. Send:

```json
{
  "mode": "discover",
  "industry": "<industry>",
  "location": "<job posting location>",
  "min_score": 70,
  "limit": 10,
  "icp": {"technologies": ["<technology that signals fit>"], "competitor_technologies": ["<competitor product>"]},
  "include_leadership_changes": false
}
```

The payment step is the same as in score mode.

| To | Set |
| --- | --- |
| Restrict discovery to one industry | `industry` |
| Restrict discovery by job posting location | `location` |
| Return only companies at or above a score | `min_score` |
| Cap how many companies are scored | `limit`, 1 to 25 |
| Mark technologies that indicate fit | `icp.technologies` |
| Mark roles whose hiring implies demand | `icp.hiring_titles` |
| Mark competitor products as displacement targets | `icp.competitor_technologies` |
| Widen or narrow the signal window | `days`, 1 to 90 |

The score's weightings adapt to the `icp` you send.

## Read the intent score and its breakdown

The response is a JSON object with `found`, `mode`, `days`, `scored`, the `weights` applied to each signal, the `icp` used and a `companies` list. Each company has this shape:

```json
{
  "domain": "<string>",
  "company_name": "<string>",
  "intent_score": "<number, 0-100>",
  "tier": "hot | warm | monitor | cold",
  "reason_codes": ["<string>"],
  "components": {"<component>": {"score": "<number>", "weight": "<number>", "detail": "<string>"}},
  "signals": {"open_roles": "<number>", "matching_roles": [], "funding": {}, "technologies_detected": "<number>", "technology_matches": [], "competitor_technologies_detected": []}
}
```

The components are `hiring_velocity`, `role_fit_hiring`, `funding_recency`, `technographic_fit`, `displacement_opportunity` and `leadership_change`. Each one carries its own `score`, `weight` and a text `detail`. To rank a list, sort by `intent_score` or group by `tier`. To explain a rank, quote the company's `reason_codes` and the `detail` of its strongest components.

## Cap the cost of a run

- Billing is per company scored. A discover call at the default `limit` of 10 scores at most 10 companies, $0.10. At `limit` 25 it scores at most $0.25.
- The 402 states the amount before you pay. Where it is a ceiling, it is the most the call can cost, and only the companies scored are charged.
- Card pays a pay-as-you-go call only at $0.50 or more. [The buyer skill](https://agents.bytemine.ai/zcj/j3pjqu3owwep/SKILL.md) covers smaller calls and Credits.
- The examples on this page keep `include_leadership_changes` at `false`, its default.

## Errors

| Code | Meaning | Action |
| --- | --- | --- |
| `402` with a `payment` block | The price quote | Pay and retry the same request, or stop |
| `invalid_request` (400) | The body is malformed | Fix the JSON |
| `settlement_failed` | The payment did not settle | Fix the wallet, then send a fresh request |
| `payment_request_mismatch` (409) | A payment was reused for a different request | Request a new 402 and pay that one |
| `usage_exhausted` | The Credits balance is used up | Top up with `POST https://agents.bytemine.ai/zcj/j3pjqu3owwep/extend` and `{"amountUsd": "..."}` |

After payment, errors from Bytemine's own API come through with their own status and body.

## Frequently asked questions

### What signals does Bytemine's buying intent score use?

The score combines hiring velocity, role-fit hiring, funding recency, technographic fit and competitor displacement into one 0-100 number per account. You can add senior leadership changes as an option. Each signal is returned as a component with its score, weight and detail, so the number can be explained.

### How much does it cost to score an account for intent?

$0.01 per company scored, in score mode and discover mode alike. The 402 states the amount before you pay.

### How many accounts can one call score?

`limit` sets the number of companies to score, from 1 to 25, with a default of 10.

### Can the intent score be tuned to an ICP?

Yes. Send an `icp` object with `technologies`, `hiring_titles` and `competitor_technologies`. The weightings adapt to it, and the response echoes the `icp` and `weights` it used.

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

No. Pay-as-you-go calls are paid one at a time through the 402. A bearer credential is needed only to buy Credits.

## Keep reading

- [Buyer skill](https://agents.bytemine.ai/zcj/j3pjqu3owwep/SKILL.md): the full purchase flow
- [How to pay](https://agents.bytemine.ai/zcj/j3pjqu3owwep/payment.md): x402, MPP, card and Credits
- [Buying Intent Score API reference](https://agents.bytemine.ai/zcj/j3pjqu3owwep/services/buying-intent/openapi.json): every request and response field
- [Error reference](https://agents.bytemine.ai/zcj/j3pjqu3owwep/errors.md): every error code and how to respond

---

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