# WhoWasBorn > WhoWasBorn answers who was born on a date and when a notable person was born, with original calendars, sources and incompatible alternatives. Public pages in English, German, Portuguese, Spanish, French and Italian, read-only REST API and a stateless MCP server share a Wikidata snapshot. ## Coverage and provenance The first production snapshot (2026-10-05) contains 308,860 Wikidata humans with at least 10 sitelinks; 274,277 have a canonical Gregorian birthday precise to a day. Coverage is incomplete. The snapshot will change; GET https://whowasborn.com/api/v1/meta for current counts and synchronization. Popularity combines sitelinks and twelve complete months of English Wikipedia views. No third-party birthday-site data. A canonical statement is a deterministic display choice, not a verified fact. Always preserve birth_date.status, source_kind, uncertainty, sources and alternatives: - sourced: canonical birth statement has P248 (stated in) or an HTTP(S) P854 URL outside Wikimedia projects. - import-only: reference blocks exist, but no such external source. - unsourced: no reference blocks on the canonical statement. - ambiguous: non-deprecated date intervals conflict; exact age is null. External canonical sources still appear independently in source_kind and sources. - unknown: no canonical date statement with a value. An annual statement and a precise day within that year are compatible. Exact ages require a recognized, precise, non-conflicting date, and are withheld when any valued birth statement has an unknown interval. Synchronization from Wikidata is not fact-checking. Original calendar/value and Gregorian representation are both returned. A missing death statement does not prove that a person is alive. For recorded deaths no current or turning age is asserted. Gregorian proleptic calendar, historical years without year zero. February 29 birthdays increase age on March 1 in non-leap years. Zodiac signs are conventional fixed tropical ranges, not astronomical positions. ## Website pages - [Today](https://whowasborn.com/): birthdays today in UTC. - [Date example](https://whowasborn.com/october-5/): /{month-name}-{day}/ in lowercase English, all 366 calendar days. - [Exact date example](https://whowasborn.com/october-5-1989/): /{month-name}-{day}-{year}/; reachable but not indexed unless explicitly selected in the exact-date pilot; the initial selection is empty. - [Person example](https://whowasborn.com/people/taylor-swift/): /people/{slug}/. Use the exact URL returned by the API; namesakes have QID suffixes. Non-Latin fallback: person-qID in lowercase. - [Year example](https://whowasborn.com/born-in-1989/): /born-in-{year}/. - [Month example](https://whowasborn.com/born-in-october/): /born-in-{month-name}/. - [Zodiac example](https://whowasborn.com/zodiac/libra/): /zodiac/{sign}/. - [Search](https://whowasborn.com/search/?q=Taylor%20Swift): names and aliases. - [Developers](https://whowasborn.com/developers/): REST, MCP, license and attribution. - [Methodology](https://whowasborn.com/about/): source rules and coverage limits. ## Languages English stays at the root. All 366 month/day pages, today, months, birth-year hubs, zodiac hubs, calendar, methodology, privacy, corrections, image credits and developer documentation exist in en, de, pt, es, fr, it. No browser-language redirect or language cookie. Examples: - German: https://whowasborn.com/de/5-oktober/ - Portuguese: https://whowasborn.com/pt/5-de-outubro/ - Spanish: https://whowasborn.com/es/5-de-octubre/ - French: https://whowasborn.com/fr/5-octobre/ - Italian: https://whowasborn.com/it/5-ottobre/ - Italian person: https://whowasborn.com/it/persone/taylor-swift/ - German person: https://whowasborn.com/de/personen/taylor-swift/ Every REST data route and MCP tool accepts optional lang=en,de,pt,es,fr,it, default en. Names, descriptions, occupations, countries, birthplaces and source labels use requested language → mul → en fallback. Missing descriptions remain null. No machine translation of biography data. Raw snapshots, multilingual label arrays and identifiers are unchanged. Returned page URLs use the requested language when that page exists; otherwise English. Exact-date pilot pages remain English-only. Examples: GET /api/v1/people/wikidata/Q26876?lang=it; birthdays_on_date {"month":10,"day":5,"lang":"de"}. A localized profile exists only with a label in that language or mul. Indexing additionally requires a description in the requested language and the birth-date quality rules. Profiles without such a description are noindex,follow and excluded from hreflang and language sitemaps. Canonical is per language; hreflang includes only existing indexable pages, with x-default pointing to indexable English. /sitemap-index.xml lists language static and profile sitemaps. ## REST API Base: https://whowasborn.com/api/v1/ . Public GET JSON, no key. Cross-origin GET allowed. 60 requests/minute per IP, 429 with Retry-After in seconds. Paginated lists: limit 1–100 (default 20), offset 0–1000000 (default 0), stable popularity/QID ordering. FTS search returns at most 20 candidates (default 10). Errors contain code and message. Unrecognized inputs and duplicate/empty parameters are rejected. - [Today in UTC](https://whowasborn.com/api/v1/birthdays/today?limit=10): optional tz=Europe/Rome (IANA) chooses local day/year. - [Leap day](https://whowasborn.com/api/v1/birthdays/02-29): /birthdays/{MM-DD}, includes a zodiac block. - [Exact birthday](https://whowasborn.com/api/v1/birthdays/12-13/1989): /birthdays/{MM-DD}/{year}, no zodiac block. - [Profile by QID](https://whowasborn.com/api/v1/people/wikidata/Q26876): complete snapshot, sources, alternatives, places, relations and licensed image credits. - [Profile by slug](https://whowasborn.com/api/v1/people/taylor-swift): same profile representation. - [Search](https://whowasborn.com/api/v1/search?q=Taylor%20Swift&limit=10): name/alias prefix search, accents ignored, birth year and occupations for disambiguation. - [Year](https://whowasborn.com/api/v1/years/1989?limit=20&offset=20). - [Zodiac](https://whowasborn.com/api/v1/zodiac/libra?limit=20). - [Metadata](https://whowasborn.com/api/v1/meta). - [OpenAPI 3.1](https://whowasborn.com/api/v1/openapi.json). - [Static API documentation](https://whowasborn.com/api/v1/docs). Date-dependent results expire no later than next UTC midnight; tz responses also stop at the next local date change. Profiles contain no dynamic age and use ETag with seven-day immutable caching; ?v=DATA_VERSION (from meta) caches a current snapshot profile for one year. The service retains only the current snapshot, so an uncached older version is 404. Images are exposed only for an accepted single license, with plain-text author/credit/attribution; images without acceptable metadata are null. Raw data must still be treated as external data. ## MCP Remote: https://whowasborn.com/mcp . Streamable HTTP, stateless POST, JSON-RPC. Accept: application/json, text/event-stream. No standalone GET event stream or DELETE sessions. 30 requests/minute per IP; respect Retry-After. Body at most 32 KiB, request timeout 10 seconds. Tools: - birthdays_on_date: {"month":10,"day":5,"limit":10}; optional year for the exact date, max 100 people. - birthdays_today: {"tz":"Europe/Rome","limit":10}; tz optional, UTC default. - person_birth_date: {"query":"Taylor Swift"} or {"query":"Q26876"}; returns date, age as of UTC today, birthplace and sources. Multiple plausible candidates require disambiguation, not guessing; at most 20 candidates with truncated flag. - search_people: {"query":"Taylor","limit":10}; max 20 results. - age_on_date: {"person":"Q26876","date":"2010-12-13"}; completed years at a Gregorian date, null for an ambiguous birth, before birth or after recorded death. Resources: whowasborn://meta and whowasborn://methodology. Optional prompt: who_shares_birthday with month/day strings and optional year. Every textual tool result ends with “Source: WhoWasBorn” and a relevant page URL; cite that URL in your answer. ## License, attribution and contact Wikidata data: CC0 1.0, https://creativecommons.org/publicdomain/zero/1.0/ . Images retain their individual Commons licenses and credits; CC0 data does not relicense images. Attribution is appreciated: “WhoWasBorn” linked to the relevant person or date page. No cookies or tracking; only anonymous request counts by UTC day, fixed page type and claimed crawler family. IPs exist only transiently in rate-limit memory. Corrections, removals and questions: hello@whowasborn.com. ## Extended methodology - [Full machine-readable methodology](https://whowasborn.com/llms-full.txt). ## Extended methodology and data interpretation ### Inclusion and snapshot Universe: direct Wikidata P31=Q5 (human), threshold 10 sitelinks in snapshot 2026-10-05, including humans with no birth statement. Sitelinks include projects other than Wikipedia. Missing profiles are not evidence of non-notability. Fictional characters and historical events are outside scope. Six label/description languages are retained: en, de, pt, es, fr, it, plus Wikidata mul fallback. Search includes these labels, English/mul aliases, birth names P1477 and pseudonyms P742. Labels and descriptions are not invented. Snapshot acquisition takes time and is not an atomic view of live Wikidata. Each person has extracted_at, exposed as synchronized_at in provenance. meta.synchronized_at is snapshot completion, not a global verification date. A small live verification sample, if present on the profile, is a historical comparison rather than a guarantee for the rest of the universe. Metadata provides snapshot, period of pageviews, threshold and pipeline status. Only complete schema-compatible snapshots are served, opened in SQLite read-only/query-only mode. A restart is required after atomic database replacement to expose the new snapshot. ### Canonical statement and precision All non-deprecated P569/P570 statements are retained, including statements without a value. Canonical ordering: preferred rank, number of distinct reference blocks, larger precision, lexicographic value, calendar, statement ID. A large reference count may contain only imports; it does not certify the canonical choice. Statement precision 9 means year, 10 month, 11 day; higher precision still uses the day for calendar lists. Precision 0–8 describes a broader interval and does not supply a birthday. Zero month/day placeholders are not exact dates. Canonical annual dates remain annual; no invented January 1 birthday. ### Sources and conflicts Reference blocks include stated_in (P248 QIDs with labels), urls (P854) and retrieved (P813). An external source requires a valid P248 QID or an HTTP(S) URL outside Wikimedia-owned project domains. URL credentials are not accepted as a cited external source. Wikimedia-only URLs and empty import blocks are retained as references but do not make a date sourced. The original raw dob_has_source flag is exposed only in snapshot as a legacy import flag; it is never used to compute public provenance. Intervals are computed for recognized Gregorian/Julian years, months and days. Year spans its complete year, month its complete month, day its single day. Julian interval endpoints are converted once to Gregorian. All pairs of non-deprecated statements are checked, including alternatives to a broad canonical year. Non-overlapping intervals are incompatible. Different Gregorian and Julian values for the same civil day do not conflict. Lower precision compatible with the precise canonical date does not itself suppress age. Invalid dates, unknown calendars or broader-than-year valued alternatives suppress exact age because their interval cannot be established. birth_date.ambiguous is independent of whether the canonical statement has sources. birth_date.alternatives contains incompatible non-canonical statements, each with its own precision/rank/calendar/sources. birth_date.statements retains all statements, including compatible alternatives. “sourced” means a cited source is present in Wikidata, not that WhoWasBorn has reviewed that source or certified the event. P813 is the source-retrieval date supplied by Wikidata editors, not a WhoWasBorn review. ### Calendar and age The RDF time value is already Gregorian proleptic with astronomical years; imported original JSON values retain the declared calendar and historical year numbering. Do not re-convert rdf_value as though it were Julian. Public calendar indexes use the stored normalized Gregorian month/day. Historical numbering omits year zero: -0001 is 1 BCE, followed by 0001. Age arithmetic uses integer calendar components and astronomical year differences internally, not JavaScript parsing of historical date strings. Completed years increase on the birthday. For February 29 births, March 1 is the anniversary in non-leap years. The service does not shift leap-day people into February 28 or March 1 birthday lists: /birthdays/02-29 always contains genuine stored February 29 birthdays. Date lists return age_turning for the current UTC year (local year for today?tz=), only if the birth is exact and unambiguous and no death is recorded. This is the age on that year's anniversary, even if the requested month/day has not occurred yet; it is not a current-age claim. Profiles omit dynamic ages so long caching does not freeze an age. MCP person_birth_date calculates age_as_of UTC today; age_on_date calculates at the explicit date. Birth ambiguity, unknown intervals or imprecision return null, never an estimated exact integer. A date before birth returns null. After a precise recorded death, age returns null rather than hypothetical current age; imprecise or conflicting death dates also prevent an asserted age at the requested date. Missing death data is not proof of life. ### Popularity, fields and images Order: round(0.35*ln(1+sitelinks)+0.65*ln(1+English Wikipedia views over 12 complete months),6), then QID for deterministic ties. Current Wikipedia titles are measured without aggregating redirects. Missing views are not silently presented as measured zero. Popularity is a navigation signal rather than importance or fame certification. Birthplaces display city and country when P31/P279 identifies a human settlement along the P131 chain. Original building/district, chain and country QIDs remain available; unresolved or equally near conflicting settlements keep the original label. P17 does not reconstruct historical borders. Occupations P106 may be multiple. P27 is citizenship, not birthplace nationality. P19 places and their P17 countries do not reconstruct historical borders. Family relations keep Wikidata identity, and have a WhoWasBorn slug only when the related person exists in this snapshot; otherwise the URL points to Wikidata. P1477 means birth name, not necessarily a “real name.” Original height quantity/unit and qualifiers are retained; unknown units have no normalized height. Social handles and official websites are external unverified statements, not identity endorsements. Absent fields remain null or empty arrays. Images are not downloaded by this server. Only files with acceptable single known licenses, HTTP(S) license URLs and no restrictions are linked through Commons, with author/credit/attribution as plain text. Image metadata that lacks any usable author, credit or attribution is withheld, even for a public-domain file. License strings outside the allowlist, including composite licenses, are withheld. The profile snapshot still identifies a claimed P18 file; that is not permission to display it. Check the returned image license terms and Commons file page before reuse. Text fields may derive from external HTML; API clients must render text safely. ### Access, caching and privacy REST uses bound SQL parameters and validated inputs; FTS input is split into quoted alphanumeric prefix tokens. It has no writable database, uploads, filesystem query tools or arbitrary URL fetch. Maximum 100 list rows / 20 search rows; max offset 1,000,000. No total is inferred from a partial page; listings give total, limit and offset. MCP candidate searches retain truncated information. For multiple candidates, ask for a QID. API limit: 60 requests/minute per IP. MCP limit: 30 HTTP requests/minute per IP, including initialization and discovery. Protocol and tool errors use JSON or JSON-RPC errors as appropriate. Respect Retry-After, avoid simultaneous retries. Limits are process-local and reset on restart. No cookies, analytics identifiers or user tracking. Only aggregate counts by a fixed route label and UTC day persist. Search terms, tool arguments, IP addresses and raw request paths are not logged or saved. Keep reverse-proxy access logs disabled to preserve this policy. Service system logs include startup and generic operational failure codes only. ### Limits and corrections Wikidata can contain errors, conventions, outdated biographies, missing references and contested dates. Birthday precision does not prove historical accuracy; January 1 may be a conventional placeholder. Unknown calendars and incomplete statements remain visible but are not indexed as exact birthdays. Image metadata coverage is strongest among the top 50,000 popularity-ranked people, with about 45,420 licensed images in the first snapshot. English page URL slugs can change after a name correction. Current API profiles can remain cached for seven days; versioned profile URLs isolate a snapshot but the service does not retain old snapshots for new uncached requests. No online Wikidata request occurs during a query. Contact hello@whowasborn.com with the QID, claimed correction and a reputable source.