Discover/BACB API
live

BACB APIservices.bacb.com ↗

Search and look up BACB-certified behavior analysts (RBT, BCaBA, BCBA, BCBA-D) by name, location, status, and credential type via a simple REST API.

Endpoint health
verified 1h ago
search_certificants
get_certificant
2/2 passing latest checkself-healing
Endpoints
2
Updated
1h ago

What is the BACB API?

The BACB Certificant Registry API exposes 2 endpoints that query the public Behavior Analyst Certification Board registry, returning up to 12 fields per record including certification number, status, expiration date, and disciplinary action flags. Use search_certificants to filter by credential type, name, location, and status across all BACB credentials, or call get_certificant to retrieve a single record directly by certification number.

This call costs2 credits / call— charged only on success
Try it
City name filter; omitted = no city restriction.
Region code within country: a 2-letter US state/territory code for United States (e.g. CO), a province code for Canada, a state code for Australia, or EN/NI/SL/WL for United Kingdom. Case-insensitive.
Certification status filter; All returns every status.
Country name exactly as the registry lists it (e.g. United States, Canada, Australia, United Kingdom). Only United States was exercised in this build; state applies to these four countries only.
Last-name filter, at least 2 characters; matches the certificant's surname (including hyphenated and multi-word surnames containing it).
First-name filter; only accepted together with last_name.
Credential to search. Exactly one type per search.
→ api.parse.bot/scraper/e8682241-2562-4c46-9692-73f2c5ac41e4/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/e8682241-2562-4c46-9692-73f2c5ac41e4/search_certificants?state=CO&status=Active&last_name=Smith&certification_type=BCBA' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace services-bacb-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: BACB Certificant Registry — search, drill down, point lookup."""
from parse_apis.services_bacb_com_api import BACB, CertificationType, CertificationStatus, CertificantNotFound

client = BACB()

# Search for active BCBAs in Colorado, capped to 5 total results.
for cert in client.certificants.search(
    certification_type=CertificationType.BCBA,
    status=CertificationStatus.ACTIVE,
    state="CO",
    last_name="Smith",
    limit=5,
):
    print(cert.display_name, cert.certification_number, cert.expiration_date)

# Drill down: take one result and fetch its full record by certification number.
hit = client.certificants.search(
    certification_type=CertificationType.BCBA,
    state="CO",
    last_name="Smith",
    limit=1,
).first()

if hit is not None:
    detail = client.certificants.get(certification_number=hit.certification_number)
    print(detail.display_name, detail.certification_level, detail.status)
    print("Supervises BCaBAs:", detail.willing_to_supervise_bcabas)
    print("Supervisors:", [s.name for s in detail.rbt_supervisors])

# Point lookup with error handling for an unknown certification number.
try:
    client.certificants.get(certification_number="1-00-00000")
except CertificantNotFound:
    print("Certificant not found — number may be invalid or undashed.")

print("exercised: certificants.search / certificants.get / CertificantNotFound")
All endpoints · 2 totalmissing one? ·

Searches the public BACB Certificant Registry and returns one record per matching certificant, each carrying the summary columns (name, location, certification type, status) plus the full detail block the registry attaches to every row (certification_number, original_certification_date, next_recertification_date, expiration_date, supervision flags, RBT supervisors). Dates are ISO YYYY-MM-DD; next_recertification_date and supervision_training_completed_on are null when the registry does not show them (RBT records have no recertification date). The registry itself requires at least one of state, city or last_name, requires last_name when first_name is given, and returns at most 100 rows per search with no paging: total_results is the registry's own match count, returned_count the rows delivered, and truncated is true when total_results exceeds returned_count, in which case narrow the search (add a name or city). A valid search with no matches returns an empty results array with total_results 0. Each call performs one registry round trip preceded by an automatic verification-challenge solve, so expect several seconds per call. certification_number values here feed get_certificant unchanged.

Input
ParamTypeDescription
citystringCity name filter; omitted = no city restriction.
statestringRegion code within country: a 2-letter US state/territory code for United States (e.g. CO), a province code for Canada, a state code for Australia, or EN/NI/SL/WL for United Kingdom. Case-insensitive.
statusstringCertification status filter; All returns every status.
countrystringCountry name exactly as the registry lists it (e.g. United States, Canada, Australia, United Kingdom). Only United States was exercised in this build; state applies to these four countries only.
last_namestringLast-name filter, at least 2 characters; matches the certificant's surname (including hyphenated and multi-word surnames containing it).
first_namestringFirst-name filter; only accepted together with last_name.
certification_typerequiredstringCredential to search. Exactly one type per search.
Response
{
  "type": "object",
  "fields": {
    "results": "array of certificant records; each has name (LAST, FIRST as listed), display_name, location (city, region), country, certification (short code), certification_level (full credential name), certification_number, status, original_certification_date, next_recertification_date (null for RBTs), expiration_date, supervision_training_completed_on (nullable), willing_to_supervise_bcabas, willing_to_supervise_trainees, rbt_supervisors (array of {name, certification_number}), has_disciplinary_action",
    "truncated": "boolean, true when total_results exceeds returned_count",
    "total_results": "integer, the registry's total match count for the search",
    "returned_count": "integer, number of records in results (registry delivers at most 100)"
  },
  "sample": {
    "data": {
      "results": [
        {
          "name": "SMITH, MELISSA",
          "status": "Active",
          "country": "United States",
          "location": "Pueblo, CO",
          "display_name": "MELISSA SMITH",
          "certification": "BCBA",
          "expiration_date": "2028-08-30",
          "rbt_supervisors": [],
          "certification_level": "Board Certified Behavior Analyst",
          "certification_number": "1-16-23660",
          "has_disciplinary_action": false,
          "next_recertification_date": "2028-08-30",
          "original_certification_date": "2016-08-31",
          "willing_to_supervise_bcabas": false,
          "willing_to_supervise_trainees": false,
          "supervision_training_completed_on": "2016-10-28"
        }
      ],
      "truncated": false,
      "total_results": 1,
      "returned_count": 1
    },
    "status": "success"
  }
}

About the BACB API

What the API Returns

Both endpoints return the same record shape: name (registry-formatted as LAST, FIRST), display_name, certification (short code: RBT, BCaBA, BCBA, or BCBA-D), certification_level (full credential name), certification_number (dashed registry form, e.g. 1-16-23660 or RBT-25-458903), status (Active / Inactive / Expired), expiration_date (ISO date), location, country, has_disciplinary_action (boolean), and rbt_supervisors (an array of {name, certification_number} pairs, populated only for RBT records).

search_certificants

The search_certificants endpoint requires exactly one certification_type and accepts optional filters for last_name (minimum 2 characters), first_name (only valid alongside last_name), city, state, country, and status. The registry delivers at most 100 records per call; the truncated boolean and total_results integer tell you when a result set has been clipped. For United States searches, state takes a 2-letter code (e.g. CO); international searches use the country's province or region code.

get_certificant

get_certificant accepts a single required parameter — certification_number in dashed form exactly as emitted by search_certificants — and returns the complete record for that individual, including their supervisor list if they hold an RBT credential. This endpoint is the reliable way to refresh or verify a single record without running a broad search.

Reliability & maintenanceVerified

The BACB API is a managed, monitored endpoint for services.bacb.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when services.bacb.com 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 services.bacb.com 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.

Last verified
1h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Verify a prospective employee's BCBA certification status and expiration date before hire
  • Build a directory of active RBT certificants in a specific US state using the state and status filters
  • Check whether a certificant has a current disciplinary action flag before contracting with them
  • Enumerate all BCaBA holders in a given country for market-size research
  • Automate periodic re-verification of a caseload of certificants using their stored certification_number values
  • Identify the listed supervisors for an RBT record via the rbt_supervisors array
  • Build compliance workflows that alert when a practitioner's expiration_date is approaching
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does the BACB offer an official developer API for the certificant registry?+
No. The Behavior Analyst Certification Board does not publish a public developer API for its certificant registry. The registry is accessible only as a human-facing web form at services.bacb.com.
How many records does search_certificants return, and what happens when there are more matches?+
The registry delivers at most 100 records per call. When the total match count exceeds that, the response sets truncated: true, and total_results reflects the full count while returned_count reflects what was actually returned. Narrowing your filters — for example, adding last_name, city, or state — is the way to bring a result set under the 100-record cap.
What does the `has_disciplinary_action` field actually indicate?+
has_disciplinary_action is a boolean drawn directly from the registry record. When true, the BACB's registry is flagging that the certificant currently has an active disciplinary action on file. It does not include the detail or history of that action — only its presence.
Does the API return historical certification records or a certificant's credential history?+
No. Each record reflects the certificant's current status as listed in the registry at the time of the call. Historical credential changes, previous certification periods, and lapsed records are not exposed. You can fork this API on Parse and revise it to add an endpoint that polls and stores records over time if longitudinal tracking is needed.
Can I search across multiple certification types in a single call?+
search_certificants requires exactly one certification_type per call. Searching RBT, BCaBA, BCBA, and BCBA-D simultaneously is not supported in a single request. You can fork this API on Parse and revise it to batch multiple certification-type requests and merge the results if that behavior is needed.
Page content last updated . Spec covers 2 endpoints from services.bacb.com.
Related APIs in HealthcareSee all →