Prerequisites
- A Unif workspace. Create one at app.unif.dev.
- A live API key from Settings → API keys. Keys look like
unif_sk_live_.... curl, or any HTTP client.
1. Confirm the key works
Every request is a bearer token away.Response
channels array is what your workspace is entitled to. Anything outside it returns a
coverage_error rather than silently empty results.
2. See what you can query
Markets and granularities differ per channel, and they change. Read them rather than hard-coding them.3. Run your first search
Search starts from filters, not identifiers. This finds affordable US beauty products that broke out this week and pay a decent commission.periodis what was actually measured. Ifadjustedis true, your dates were snapped to a boundary the channel supports. See Periods and currency.next_cursordrives pagination. Never build page offsets yourself.meta.completenesstells you how much of the record came back populated.
4. Enrich a row you already have
Searching is for discovery. Most production work is the other direction: you have a list, and you want Unif data on it.ref, so joining back onto your own rows is a lookup rather than a
guess. Results arrive in the order you sent them, and one failure does not fail the batch:
What to do next
Store the IDs
Persist
shp_… and prd_… IDs on your own rows so you never have to resolve twice.Stop polling
Put the set behind a tracker and let webhooks tell you when something moves.
Go bulk
More than 100 rows, or an export? Hand it to a job.
Handle failure well
The error taxonomy, and which failures are worth retrying.