Using CURP demographic API for age verification and geographic segmentation
Question
Answers
We use CURP demographic data for age-gating on our platform (18+ betting content). The API returns DOB in YYYY-MM-DD format — you calculate age server-side. Way more reliable than trusting users to self-report honestly. Our under-18 rejection rate from CURP verification is about 4% of signups, meaning 4% of people who passed our self-declared age gate were actually minors.
Gender comes back as "H" (hombre) or "M" (mujer) from RENAPO. States come as two-letter codes (e.g., "JC" for Jalisco, "DF" for CDMX, "NE" for foreign-born). You'll need a lookup table to convert to full names for your analytics.
For consent UX: we frame it as "Verify your identity to unlock full access." About 70% of users provide CURP on first ask. The remaining 30% we give an alternative (INE photo upload). Conversion is fine — people are used to providing CURP in Mexico for basically everything.
For geographic segmentation, heads up: state of birth ≠ state of residence. Lots of people born in smaller states (Oaxaca, Chiapas, Guerrero) now live in CDMX or Guadalajara. So your "users in Jalisco" metric based on CURP birth state won't be accurate for current location. Use IP geolocation or explicit address for current location; use CURP state of birth for cultural/demographic profiling.
That said, CURP demographic data is great for aggregate audience insights. We feed it into our recommendation engine — users born in certain states tend to prefer regional content in Spanish versus dubbed English content. Small signal but statistically significant at scale.
For API provider selection, check apipull.com API Hub. Look for one that returns all demographic fields in a single call rather than requiring separate endpoint hits for different data points. Saves on latency and cost per verification.
I'm a growth engineer at a digital entertainment platform (think streaming + gaming + social) that operates in Mexico. We need CURP demographic API access for two specific use cases: age verification (we have 18+ content that requires age gating) and user demographic segmentation (understanding our audience for content recommendation and ad targeting).
For age verification, our legal team requires that we verify user age against an authoritative source rather than relying on self-reported birth dates. In Mexico, CURP is the most accessible identifier that encodes date of birth. We want to verify a user's CURP, extract their DOB, calculate their age, and gate access accordingly. Simple in theory, but I have questions about implementation.
For demographic segmentation, we want to understand the gender and geographic distribution of our user base. CURP provides gender and state of birth — both valuable for content and advertising decisions. We're not looking to do anything creepy, just aggregate analytics like "45% of our users in Jalisco are male, 18-25" for advertiser pitches.
Specific questions about CURP demographic API usage:
Our user base is about 2 million monthly actives, but we'd only need CURP verification during initial signup (once per user). That's roughly 50,000 new signups per month currently. Need a provider that handles this volume without issues and responds fast enough for a mobile signup flow (target: under 500ms).
Stack is Flutter mobile + Go backend + ClickHouse for analytics. Would store demographic data in ClickHouse for aggregate queries. Privacy-wise, we'd hash the CURP after verification so we can detect repeat signups but not expose the raw identifier.
Has anyone built age gating or demographic profiling on top of CURP data? What was the user acceptance like? Did people push back on providing their CURP for an entertainment platform, or is it becoming normalized in Mexico?