Skip to main content

ValidaCurp Python Client

PyPI version Python versions License: MIT

Python client for validating, calculating, and obtaining CURP (Clave Única de Registro de Población) information in México.

1. Requirements

  • Python 3.7 or later

2. Installation

pip install multiserviciosweb

3. Account

3.1. Create an account

Create an account by following this link: https://valida-curp.tawk.help/article/registro-de-usuario

3.2. Create a project

Create a project by following this link: https://valida-curp.tawk.help/article/creaci%C3%B3n-de-proyecto

3.3. Get a token

Get your token by following this link: https://valida-curp.tawk.help/article/obtener-token-llave-privada-proyecto

4. Usage

4.1. Import the library

from MultiServiciosWeb import ValidaCurp, ValidaCurpException

4.2. Create an instance

The constructor receives the token as first parameter. Optionally you can pass a custom endpoint.

valida_curp = ValidaCurp('YOUR-TOKEN')

You can also set the token via environment variable. Create a .env file:

TOKEN_VALIDA_API_CURP=YOUR-TOKEN

Then instantiate without arguments:

valida_curp = ValidaCurp()

4.3. (Optional) Set API version

You can set the API version to query. Default value is 2.

valida_curp.set_version(2)  # 1 or 2

Version 1 of the API is deprecated. Please use version 2.

4.4. (Optional) Custom endpoint

valida_curp = ValidaCurp('YOUR-TOKEN', 'https://custom.valida-curp.com.mx/curp/')

5. Methods

5.1. Validate CURP

The method is_valid() takes a CURP as parameter and validates its structure.

result = valida_curp.is_valid('PXNE660720HMCXTN06')
print(result)

Response:

{'valido': 1}

5.2. Get CURP data

The method get_data() takes a CURP as parameter and consults the CURP information in RENAPO.

data = valida_curp.get_data('PXNE660720HMCXTN06')
print(data)

Response:

{
    'Applicant': {
        'CURP': 'PXNE660720HMCXTN06',
        'Names': 'ENRIQUE',
        'LastName': 'PEÑA',
        'SecondLastName': 'NIETO',
        'GenderKey': 'H',
        'Gender': 'Hombre',
        'DateOfBirth': '1966-07-20',
        'Nacionality': 'MEX',
        'CodeEntityBirth': '',
        'EntityBirth': '',
        'KeyEvidentiaryDocument': 1,
        'EvidentiaryDocument': 'Acta de nacimiento',
        'CurpStatusKey': 'AN',
        'CurpStatus': 'Alta Normal'
    },
    'EvidentiaryDocument': {
        'YearRegistration': 1966,
        'KeyIssuingEntity': '',
        'KeyMunicipalityRegistration': 14,
        'MunicipalityRegistration': '',
        'Foja': 0,
        'FolioLetter': '',
        'Book': 0,
        'CertificateNumber': 985,
        'RegistrantNumber': 15,
        'RegistrationEntity': 'México',
        'ForeignRegistrationNumber': '',
        'Volume': 0
    }
}

5.3. Calculate a CURP

The method calculate() takes a dictionary as parameter and calculates the CURP structure from the provided data.

result = valida_curp.calculate({
    'names': 'Enrique',
    'lastName': 'Peña',
    'secondLastName': 'Nieto',
    'birthDay': '20',
    'birthMonth': '07',
    'birthYear': '1966',
    'gender': 'H',
    'entity': '15',
})
print(result)

Required fields:

Field Description Example
names First name(s) 'Juan'
lastName Paternal last name 'Pérez'
secondLastName Maternal last name 'López'
birthDay Day of birth (2 digits) '15'
birthMonth Month of birth (2 digits) '09'
birthYear Year of birth (4 digits) '1990'
gender 'H' for male, 'M' for female 'H'
entity Entity code (2-digit state code) '09'

Response:

{'curp': 'PXNE660720HMCXTN06'}

5.4. Get entities

The method get_entities() doesn't take any parameters and returns the list of entities.

entities = valida_curp.get_entities()
print(entities)

Response:

{
    'clave_entidad': [
        {'clave_entidad': '01', 'nombre_entidad': 'AGUASCALIENTES', 'abreviatura_entidad': 'AS'},
        {'clave_entidad': '02', 'nombre_entidad': 'BAJA CALIFORNIA', 'abreviatura_entidad': 'BC'},
        ...
    ]
}

6. Error handling

All methods raise ValidaCurpException on API errors.

from MultiServiciosWeb import ValidaCurp, ValidaCurpException

try:
    data = valida_curp.get_data('PXNE660720HMCXTN06')
except ValidaCurpException as e:
    print(f'API Error: {e}')
except Exception as e:
    print(f'Unexpected Error: {e}')

7. Full example

from MultiServiciosWeb import ValidaCurp, ValidaCurpException

try:
    valida_curp = ValidaCurp('YOUR-TOKEN')

    # Validate CURP structure
    print(valida_curp.is_valid('PXNE660720HMCXTN06'))

    # Get CURP data from RENAPO
    print(valida_curp.get_data('PXNE660720HMCXTN06'))

    # Calculate CURP
    print(valida_curp.calculate({
        'names': 'Enrique',
        'lastName': 'Peña',
        'secondLastName': 'Nieto',
        'birthDay': '20',
        'birthMonth': '07',
        'birthYear': '1966',
        'gender': 'H',
        'entity': '15',
    }))

    # Get entities
    print(valida_curp.get_entities())

except ValidaCurpException as e:
    print(f'ValidaCurp Exception: {e}')
except Exception as e:
    print(f'Unexpected Error: {e}')

8. Credits

9. License

This project is released under the MIT License. See the LICENSE file for details.

Release files for multiserviciosweb 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for multiserviciosweb 1.1.2
File Size Uploaded
multiserviciosweb-1.1.2.tar.gz 7.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for multiserviciosweb 1.1.2
File Interpreter ABI Platform
multiserviciosweb-1.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 15.0 kB

Release files / multiserviciosweb-1.1.2.tar.gz

Download URL multiserviciosweb-1.1.2.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
fc54c0ce7f752d7748cfb10a865da8fef65db8691acb58943028c82284f95bef
BLAKE2b-256 checksum
How to use checksums
d0a0f679314f003f843ae5361e9068b803614e11b22e8033e2001393178aa39a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / multiserviciosweb-1.1.2-py3-none-any.whl

Download URL multiserviciosweb-1.1.2-py3-none-any.whl
Size 7.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d5f48b177efb506843d49a7f4d88dc05cd8cef2cad856d80e79331beacb362ea
BLAKE2b-256 checksum
How to use checksums
57789fe9bb420463f98a0bb479958432a8514887b9bae28fca550adf738809be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.1.2 This release

2 release files

1.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page