Pricing: the first run is a free baseline (up to 5 matches),
then
0.5 credits per new person delivered.Discovery vs. Entity watchers
A Discovery Watcher finds people you don’t know yet — it re-runs a filter and surfaces whoever newly matches. Use it to build a feed of candidates or decision-makers entering your ICP. An Entity Watcher tracks a known list of people and alerts you when their profiles change — a new job, a title bump, a location move. If you already hold the profile URLs, see Entity Watchers.How it runs
1
Create the watch
POST your filters, a config (schedule + result cap), and one or more
notifications channels. The response returns a watch id.2
Baseline run (free)
Within seconds, the first run delivers a free baseline sample of up to 5
matches so you can confirm the setup and payload shape. No credits are charged.
3
Recurring runs
On your schedule (
every_hours), the watcher re-runs your filters and delivers
people new or refreshed since the previous run, up to max_results_per_run.
You’re charged per delivered person.Each run delivers matches whose profile was added or updated since the last
run — a feed of movement within your filter set, not a one-time export. To
pull the full current match set, use Person Search.
Request body
The response returns the watch
id:
All examples require the headers
authorization: Bearer YOUR_API_KEY,
content-type: application/json, and x-api-version: 2025-11-01. For the
full list of field values and operators, see the
Person Search reference.Filter format
Watcher filters use the same syntax and fields as Person Search — no new filter language to learn. Every filter is a tree:{ field, type, value } triple: field is the attribute, type is the operator ((.) for contains, =, in, not_in, => for ≥, =< for ≤, and so on), and value is what to match. Each op combines its conditions with and or or, and op-groups nest — put an and group inside an or group’s conditions for “A and B, or C”. See the Person Search reference for the full field and operator catalog.
Baseline limit: 500,000 people. The baseline run only delivers 5, but it
reads your entire match set to record what already exists. That read is capped
at 500,000, and we check it when you create the watch, so a broader filter comes
back
400 and you narrow it before anything runs. The cap applies to the
baseline alone. Later runs deliver whatever newly matches, bounded by
config.max_results_per_run.Filters from other datasets
A person watch is not limited to person fields. Drop a company field or a job field into the same flatconditions list and the watch filters on where those people work, or on what their employer is hiring for:
POST /company/search or POST /company/enrich yourself with the crustdata_company_id on the delivered person’s current employer.
See Cross-dataset filters for the join rules, the lookup fields for that follow-up call, the limits, and why negation (!=, not_in, (!)) is rejected on a filter from another dataset.
Recipes
Persona: title + location
Alert daily when new ML engineers in Paris appear:Persona at a company-size band
New VPs of Finance at 51–500-employee companies:Seniority + skills
New CXO-level people with machine-learning skills:Movement signal: recently changed jobs
People who recently changed jobs (a new decision-maker signal — best for sales/GTM):Education filter, excluding companies
Stanford alumni who are not currently at the big three:Delivery channels
Every watch needs at least one channel innotifications. Add one or more; matches fan out to all of them.
Where the records travel
By default a run’s people arrive inside the notification, underresults. Set
config.payload_delivery_type to "link" and the body carries no records at all. It
carries metadata.payload_delivery.url instead, a pre-signed S3 URL for one NDJSON
file holding every record of that run.
Switch when a run can outgrow what your receiver accepts. An AWS Lambda proxy
integration caps a request at 6 MB and an ALB target at 1 MB, and an oversize body is
refused whole.
metadata.payload_delivery.type rather than testing for results: a
link watch falls back to an inline body if the file cannot be written.
See Payload delivery for the file format, the link
lifetime, the run-summary shape, and the errors.
Manage a watch
Pricing
You’re charged only for records actually delivered — never for a run that finds nothing new. For the full credit catalog, see Pricing.
Related
Entity watchers
Watch a known list of people for profile changes.
Person Search
Run the underlying search on demand and pull the full current match set.
Person Search reference
The complete catalog of filter fields and operators.
Pricing
Credit costs across every Crustdata endpoint.

