USREPS APIusreps.org ↗
Query the US Registry of Exercise Professionals for certified trainers, credential codes, expiration dates, and locations via a single search endpoint.
What is the USREPS API?
The USREPS API gives programmatic access to the US Registry of Exercise Professionals public directory through 1 endpoint, search_professionals, which returns up to 500 credential records per broad query. Each result includes the professional's name, certifying organization code, specific credential code, expiration date, location, job role, and whether the credential carries portable (endorsed) status. All filter parameters are optional and combinable.
curl -X GET 'https://api.parse.bot/scraper/9b24e329-9557-4d23-9b5e-3259d530336a/search_professionals?job_role=Personal+Trainer&last_name=Smith' \ -H 'X-API-Key: $PARSE_API_KEY'
Searches the USREPS public registry for certified exercise professionals. Every input is optional and all supplied filters are combined (AND); at least one filter should be given, and a search that is too broad is capped by the registry at 500 records (total reports at most 500). Each result row is one credential held by one person, so a person with two credentials appears twice with different credential_number values. Results come 12 per page in the registry's own order (alphabetical by last name); pass page to fetch later pages (omitted = page 1), and has_more tells whether another page exists. Name matching is a substring match on the registry side (e.g. last_name 'Smith' also returns 'Goldsmith'). Dates are returned as the registry prints them, MM/DD/YYYY. search_radius only applies together with postal_code. An empty results array with total 0 means the registry has no matching records. Unrecognized job_role, organization, credential, state or search_radius values are rejected before any request.
| Param | Type | Description |
|---|---|---|
| city | string | City name. |
| page | integer | 1-based results page; 12 rows per page. |
| state | string | Two-letter US state or territory code. |
| job_role | string | Job role filter from the registry's Job Role dropdown. |
| portable | boolean | Filter on whether the credential is portable (endorsed). Omitted = no filter. |
| last_name | string | Last name (substring match). |
| credential | string | Specific credential code (organization-credential) to filter on. |
| first_name | string | First name (substring match). |
| postal_code | string | Postal code, leading zeros preserved. |
| organization | string | Certifying organization code from the registry's Organization Name dropdown. |
| search_radius | string | Radius in miles around postal_code; requires postal_code. |
| credential_number | string | Exact credential/certification number as issued by the organization (e.g. one shape: T160093). |
{
"type": "object",
"fields": {
"page": "integer page returned",
"total": "integer total matching rows reported by the registry (capped at 500 for broad searches)",
"results": "array of credential rows: name ('Last, First' as shown), last_name, first_name, organization (certifying body code), credential (credential type code), credential_number, portable ('Yes'/'No'), expiration_date (MM/DD/YYYY), city, state, country, postal_code",
"has_more": "boolean, true when a further page exists",
"page_size": "integer rows per page (12)"
},
"sample": {
"data": {
"page": 1,
"total": 2,
"results": [
{
"city": "Lincoln",
"name": "Smith, John",
"state": "AL",
"country": "US",
"portable": "Yes",
"last_name": "Smith",
"credential": "CSCS",
"first_name": "John",
"postal_code": "35096",
"organization": "NSCA",
"expiration_date": "12/31/2026",
"credential_number": "7248321982"
}
],
"has_more": false,
"page_size": 12
},
"status": "success"
}
}About the USREPS API
What the API Returns
The search_professionals endpoint queries the USREPS public registry and returns an array of credential rows. Each row includes name (formatted as 'Last, First'), last_name, first_name, organization (the certifying body code), credential (the specific credential code), expiration_date, city, state, job_role, and portable (a boolean indicating whether the credential is endorsed as portable across organizations).
Filtering and Pagination
Filters can be combined freely: supply first_name and state together to narrow results to professionals in a specific state, or pair credential with city to locate holders of a particular certification locally. The portable boolean filter, when set, restricts results to endorsed or non-endorsed credentials specifically. Results are paginated at 12 rows per page; use the page parameter (1-based) alongside the total and has_more response fields to walk through multi-page result sets.
Coverage Limits
The registry caps broad searches at 500 total reported records. When total returns 500 and has_more is true after page 42, the query is likely hitting that ceiling and should be narrowed with additional filters such as state, city, or credential. The registry only covers professionals who have voluntarily listed their credentials with USREPS-recognized certifying organizations; it is not an exhaustive directory of all fitness professionals in the US.
The USREPS API is a managed, monitored endpoint for usreps.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when usreps.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official usreps.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Verify that a personal trainer holds a current, non-expired credential before booking sessions.
- Build a directory of USREPS-listed fitness professionals filtered by state and city for a gym locator tool.
- Cross-check job applicants' claimed certifications against the live registry using last_name and credential code.
- Aggregate credential distribution data by organization and job_role to analyze fitness industry certification trends.
- Filter for portable (endorsed) credentials to identify professionals whose certifications are recognized across multiple organizations.
- Automate periodic expiration-date checks for a roster of employed fitness staff to flag upcoming renewals.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.