API

API reference

One lookup endpoint. Numbers are E.164 (normalized examples below). Get credentials in the portal.

Base URL

https://api.harvestwave.com

Authentication

Create and rotate credentials in the portal under API credentials. Do not put the portal password on the lookup request.

Applications authenticate with an OAuth2 client-credentials bearer token on Authorization: Bearer.

Get an access token

Request a token:

POST https://api.harvestwave.com/oauth/token

Body fields: grant_type, client_id, and client_secret. grant_type must be client_credentials. The same call accepts Content-Type: application/json or Content-Type: application/x-www-form-urlencoded.

JSON body:

POST /oauth/token HTTP/1.1
Host: api.harvestwave.com
Content-Type: application/json

{
  "grant_type": "client_credentials",
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET"
}

Form body, same three fields:

POST /oauth/token HTTP/1.1
Host: api.harvestwave.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET

Response fields: access_token, token_type (Bearer), and expires_in (seconds). The default expires_in is 28800 (eight hours). There is no refresh token — request a new client-credentials token when near expiry.

{
  "access_token": "YOUR_ACCESS_TOKEN",
  "token_type": "Bearer",
  "expires_in": 28800
}

Call the API

Send the token as Authorization: Bearer <access_token>.

Authorization: Bearer YOUR_ACCESS_TOKEN

For the full implementer walkthrough (portal credentials, token call, lookup samples, and TypeScript), see How to connect.

POST /v1/lookups

Send one E.164 number. The match is exact. Off-by-one is a different number; there is no fuzzy matching.

Request

POST /v1/lookups HTTP/1.1
Host: api.harvestwave.com
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN

{
  "phoneNumber": "+15551234567"
}

Response

{
  "isBusiness": true,
  "businesses": [
    { "name": "Example Firm LLP", "confidence": 1.0 }
  ]
}

confidence is 1.0 for an exact directory listing. Address, additional numbers, and contacts are omitted unless your token includes those data permissions and the directory has them. Entitled extra slices that actually appear on the body add one credit each.

Errors and rate limits

See the portal for the live account status of credentials, remaining credits, and any enforced limits. This page does not invent status codes or SLA numbers.

Scroll to Top