---
title: "Estimate A Saved Search'S Daily Volume"
method: GET
path: "/v0/webhooks/volume-estimate"
tags: ["Webhooks"]
---

# Estimate A Saved Search'S Daily Volume

`GET /v0/webhooks/volume-estimate`

## Request

- Base URL: `https://api.theirstack.com`
- URL: `https://api.theirstack.com/v0/webhooks/volume-estimate`
- Auth: HTTP bearer

Returns how many records a saved search matched per day over the last 7 days, and what they would cost. Use it to size max_events_per_day: a cap below avg_records_per_day means the webhook will drop matches every day, and dropped matches are never sent later. A webhook whose events are companies (a company search, or trigger_once_per_company) has no daily estimate and returns nulls with an unavailable_reason.

## Query parameters

- `search_id` integer, required: ID of the saved search to estimate
- `trigger_once_per_company` boolean: Whether the webhook fires once per company. A webhook that does has no daily estimate, because its events are companies rather than jobs and it only fires for companies it has not sent yet.

## Response `200`

Successful Response

- WebhookVolumeEstimate: What a saved search would send through a webhook on an average day. Measured from the last 7 days of matches, which is the same number the scanning-frequency tier is chosen from — one estimate, one meaning, so a cap warning can never contradict the cadence the webhook actually gets. The estimate is **null, not zero**, whenever it cannot be measured. Zero is an answer ("this search matches nothing"); null says we have no number, and the two must not be confused by anything sizing a cap against it.
  - `search_id` integer, required: The saved search this estimate is for.
  - `records_last_7_days` integer, nullable: Records matching the search that we discovered in the last 7 days. When the search's own date filters reach back fewer days (e.g. posted in the last 24 hours), it is measured over that shorter window and scaled to 7 days. Null when the estimate is unavailable.
  - `avg_records_per_day` integer, nullable: records_last_7_days / 7, rounded down. The number to compare a daily cap against. Null when the estimate is unavailable.
  - `credits_per_record` integer, required: API credits one event costs: 1 for jobs, 3 for companies.
  - `avg_credits_per_day` integer, nullable: avg_records_per_day * credits_per_record. Null when the estimate is unavailable.
  - `unavailable_reason` string, nullable: Why there is no estimate, when there is none. Null when there is.

## Other responses

- `400`: Bad Request
- `402`: Payment Required
- `422`: Unprocessable Content
- `500`: Internal Server Error

## Changes

- **2026-09-05** `7b32949ee99e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/theirstack/apis/theirstack-api-reference/changes/v0/webhooks/volume-estimate/get.md)

---

[API](https://skmtc.dev/theirstack/apis/theirstack-api-reference.md) - [All operations](https://skmtc.dev/theirstack/apis/theirstack-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/theirstack/apis/theirstack-api-reference/revisions/4f3da5ce4026?raw)
