# Datasets and calibration

GET /v1/datasets lists every dataset Bewary answers from, with its geography (worldwide or a country code), what it holds and its live counts. It is free and needs no key. Every signal in an answer names the dataset it came from, so a buyer always knows what a verdict rests on. The site score is calibrated on labelled hosts, and its table is published at GET /v1/calibration/site.

Updated 2026-10-30.

## Every dataset, with its geography

`GET /v1/datasets` is free and needs no key. It lists every dataset Bewary answers from:

| Field | Meaning |
|---|---|
| `id`, `name` | The dataset, such as `phone_complaints` (US phone complaints) or `phone_reports_de` (German regulator number actions) |
| `coverage` | `WW` for worldwide, or the country code of a national list, such as `US` or `DE` |
| `kind` | `scam_list`, `reference`, `own_traffic` or `model` |
| `entity_types` | What it holds: domains, links, phone numbers, wallets, IBANs and so on |
| `active_entries` | Entries in force now, for a scam list |
| `target_countries`, `entity_countries` | Entries by the country they are aimed at, and by the country they are from |
| `refreshed_at` | The last time it was read |

The [data page](/data) shows the same list by country, read live from the API.

## Where each answer came from

Every signal in an answer names its `dataset` and that dataset's `coverage`, and every entity lists all the datasets checked for it, with `in_coverage: false` when a dataset does not cover the value, such as a US-only list for a German number. So "not on any list" is always "not on these lists, which cover this value".

## The calibration behind the site score

A domain whose page Bewary's worker read in the last 90 days carries `site.p_scam_site`: the share of scam sites among labelled hosts with the same score, calibrated monotone and published at `GET /v1/calibration/site`, free. The table gives each score band, how many labelled hosts fell in it, how many were scam sites, the probability served and its 95% interval. It is refit as the nightly audit labels more hosts. The envelope's own `p_scam` is not calibrated yet: `models.calibration` says `interim-band-v0`.
