> Reverse Contact API documentation. This is the Markdown copy of https://docs.reversecontact.com/endpoints/search-organizations-count
> Every page is listed at https://docs.reversecontact.com/llms.txt, every endpoint with its credit cost and status at https://docs.reversecontact.com/catalog.json

# Organization search count

> Count matching organizations with the same filters as Organization search, for free.

- Endpoint: `POST https://api.reversecontact.com/v2/search/organizations/count`
- Credits: Free.
- Answer: synchronous.
- Last verified: 2026-10-16

## Introduction

The Organization Search Count endpoint returns the total number of organizations matching the same filters as [Organization search](https://docs.reversecontact.com/endpoints/search-organizations), without returning any profile. Use it to size a query before spending credits: [Organization search](https://docs.reversecontact.com/endpoints/search-organizations) costs 1 credit per organization delivered, while this endpoint is free.

The endpoint accepts exactly the filters of Organization search, without the pagination parameters: a count is a single number, so there is no page to request, and sending `cursor` or `perPage` returns HTTP `422` with `UNKNOWN_FIELD`.

Like [Usage](https://docs.reversecontact.com/endpoints/usage), this endpoint **costs 0 credits**, but it is still a real request: it counts toward your rate limits.

## Authorization

| Name     | Type   | Required | Description                                                                                         |
| -------- | ------ | -------- | --------------------------------------------------------------------------------------------------- |
| `apikey` | string | Yes      | Your API key from the developer dashboard. Pass it via `Authorization: Bearer YOUR_API_KEY` header. |

## Request body

Filters are combined with **AND** logic, exactly as on [Organization search](https://docs.reversecontact.com/endpoints/search-organizations#request-body): the scalar filters (`companyName`, `companyDomain`, `industry`, `specialities`, `maxDataAgeDate`), the nested-object filters (`employeeCountRange`, `foundedYear`, `followersCount`, `location`) and the [specialities](https://docs.reversecontact.com/endpoints/search-organizations#specialities) matching rules. See the Organization search page for the complete reference.

At least one filter is required, and `maxDataAgeDate` cannot be the only one: both cases return HTTP `422` with `NO_FILTER_PROVIDED`. Filters are validated before the query runs: unknown field names, blank values and values outside a closed list return HTTP `422` with the offending field and suggested values. See [Search filter validation](https://docs.reversecontact.com/guides/errors-retries#search-filter-validation).

## Response structure

| Field     | Type    | Description                                      |
| --------- | ------- | ------------------------------------------------ |
| `success` | boolean | `true` if the request was processed successfully |
| `error`   | `null`  | Always `null` on success                         |

**data** (SearchCount): Total number of matching organizations

| Field   | Type   | Description                                       |
| ------- | ------ | ------------------------------------------------- |
| `count` | number | Total organizations matching the supplied filters, across all pages |

## Code examples

**Code Examples**

```bash [cURL]
curl -X POST https://api.reversecontact.com/v2/search/organizations/count \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "industry": "Software Development",
    "employeeCountRange": { "min": 51, "max": 200 },
    "location": { "countryCode": "FR" }
  }'
```
```javascript [JavaScript]
const response = await fetch(
  "https://api.reversecontact.com/v2/search/organizations/count",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      industry: "Software Development",
      employeeCountRange: { min: 51, max: 200 },
      location: { countryCode: "FR" }
    })
  }
);

const payload = await response.json();
console.log(`${payload.data.count} matching organizations`);
```
```python [Python]
import requests

response = requests.post(
    "https://api.reversecontact.com/v2/search/organizations/count",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "industry": "Software Development",
        "employeeCountRange": {"min": 51, "max": 200},
        "location": {"countryCode": "FR"}
    }
)

payload = response.json()
print(f"{payload['data']['count']} matching organizations")
```

## Example response

**Example Response**

```json [200 - Success]
{
  "success": true,
  "data": {
    "count": 2317
  },
  "error": null,
  "quotas": {
    "creditsConsumed": 0,
    "workspace": {
      "id": "ws_abc123",
      "credits": { "total": 10000, "used": 4521, "left": 5479 }
    }
  },
  "metadata": {
    "requestId": "req_o1c2o3u4n5t6",
    "executionTimeMs": 88
  }
}
```
