OrbTop

NASBA CPA License Verifier — Multi-State Accountant Lookup

LEAD GENERATIONBUSINESSOTHER

NASBA CPA License Scraper

Scrape Certified Public Accountant license records from the official NASBA Accountancy Licensee Database. Returns license number, status, issue and expiration dates, jurisdiction, license type, firm, and contact city/state across the 53 U.S. boards of accountancy that share data with the central registry.


NASBA CPA License Scraper Features

  • Searches by last name, first name, license number, or jurisdiction
  • Returns 20+ fields per CPA — license details, contact, firm, disciplinary flags
  • Optional detail-page enrichment adds issue date, expiration, CPE-ID, and contact city/state/zip
  • Multi-state sharding — list jurisdictions to bypass the server's per-query result cap
  • Authoritative source — pulls directly from cpaverify.org, the only official single-source national CPA database
  • No proxies, no captchas, no API keys

Who Uses NASBA CPA Data?

  • Accounting software vendors — Build prospect lists for tax, audit, and bookkeeping platforms
  • Compliance teams — Verify a CPA's active license status, jurisdiction, and disciplinary history before engaging
  • B2B marketing — Target active CPAs by state for newsletters, training, and conference outreach
  • Regulatory researchers — Monitor enforcement actions and license-status patterns across boards
  • Recruiters — Source CPAs by jurisdiction and license type for staffing and headhunting

How the NASBA CPA Scraper Works

  1. Search — The scraper hits the cpaverify.org public search with your filters (last name required, plus optional first name, license number, or jurisdiction codes)
  2. Paginate — Walks the result pages until it hits your maxItems cap or the server's 250-record per-query ceiling
  3. Enrich (optional) — When do_fetch_detail is on, fetches each licensee's detail page to add issue date, expiration, contact city/state/zip, and CPE-ID

If you list multiple jurisdictions, each runs as its own search shard. That's how you exceed the 250-row cap — narrow the query, then aggregate.


Input

{
  "lastName": "Smith",
  "firstName": "",
  "licenseNum": "",
  "jurisdictions": ["CA"],
  "do_fetch_detail": true,
  "maxItems": 10
}
Field Type Default Description
lastName string (required) Last name to search. NASBA rejects empty queries.
firstName string "" First-name filter. Use it when a last name returns the 250-row cap.
licenseNum string "" Specific license number to verify.
jurisdictions array [] Two-letter state codes (CA, NY, TX). Empty searches every jurisdiction at once; listing codes runs one shard per state.
do_fetch_detail boolean true Fetch each licensee's detail page for issue/expiration dates, CPE-ID, and contact location. Disable for a fast metadata-only sweep.
maxItems integer 10 Maximum records to return. Default keeps tester runs under the 5-minute cap.

Verify a single license

{
  "lastName": "Smith",
  "licenseNum": "12364",
  "jurisdictions": ["KS"],
  "maxItems": 1
}

Sweep one state without detail enrichment

{
  "lastName": "Johnson",
  "jurisdictions": ["CA"],
  "do_fetch_detail": false,
  "maxItems": 250
}

NASBA CPA Scraper Output Fields

{
  "licenseeId": 519411205,
  "licenseeGeneralId": 529516185,
  "lastName": "(HILL) SMITH",
  "firstName": "LINDSAY",
  "middleName": null,
  "maiden": null,
  "suffix": null,
  "indivName": "LINDSAY (HILL) SMITH",
  "licenseNum": "12364",
  "licenseTypeDescription": "",
  "licenseTypeName": "CPA.",
  "licenseStatusDescription": "ACTIVE CERTIFICATE",
  "licenseStatusType": "ACTIVE CERTIFICATE",
  "active": true,
  "issueDate": "2017-01-03",
  "expirationDate": null,
  "jurisdictionAbbreviation": "KS",
  "jurisdictionName": "KANSAS BOARD OF ACCOUNTANCY",
  "jurisdictionId": 90,
  "city": "FRONTENAC",
  "stateProvince": "Kansas",
  "zip": null,
  "country": "USA",
  "firmName": null,
  "cpeId": "CPE-F594D",
  "ncId": null,
  "disciplinaryAction": "N",
  "disciplinaryActions": [],
  "detailUrl": "https://ald.nasba.org/search/cpa/529516185?jurisdictionId=90",
  "lastUpdatedAt": "2026-05-01",
  "scrapedAt": "2026-05-01T23:40:12.345Z"
}
Field Type Description
licenseeId integer NASBA's internal licensee ID
licenseeGeneralId integer General ID used in the detail-page URL
lastName string Last name as recorded by the State Board
firstName string First name
middleName string Middle name
maiden string Maiden name when reported
suffix string Name suffix (Jr., Sr., III)
indivName string Full display name
licenseNum string CPA license / certificate number
licenseTypeDescription string License type description
licenseTypeName string Short license type code (detail-only)
licenseStatusDescription string Status (ACTIVE, INACTIVE, REVOKED, LAPSED)
licenseStatusType string Normalized status type
active boolean True when the license is currently active
issueDate string Issue date YYYY-MM-DD (detail-only)
expirationDate string Expiration date YYYY-MM-DD (detail-only)
jurisdictionAbbreviation string Two-letter state code
jurisdictionName string Full State Board name
jurisdictionId integer NASBA jurisdiction ID
city string Contact city (detail-only)
stateProvince string Contact state (detail-only)
zip string Contact ZIP (detail-only)
country string Contact country (detail-only)
firmName string Associated CPA firm name
cpeId string CPE-ID for continuing-education tracking (detail-only)
ncId string National Candidate ID (detail-only)
disciplinaryAction string Y, N, or "Contact State Board For Details"
disciplinaryActions array Action descriptions when reported
detailUrl string Public NASBA detail page URL
lastUpdatedAt string Last update from the State Board feed (detail-only)
scrapedAt string When the record was extracted (ISO 8601)

FAQ

How do I look up a CPA on NASBA?

The NASBA CPA License Scraper takes a last name (required) plus optional first name, license number, or state codes. Run it with lastName and jurisdictions: ["CA"] to find a California CPA, or add licenseNum to verify a specific license.

How much does the NASBA CPA Scraper cost to run?

Pricing is pay-per-event: a flat $0.10 per run start plus $0.001 per record extracted. A full state sweep of 250 records with detail enrichment runs in under two minutes.

Why are some fields null?

The NASBA CPA Scraper returns whatever each State Board chooses to share with cpaverify.org. Hawaii and New Mexico don't participate at all. Other boards withhold expiration dates, contact info, or disciplinary detail under state privacy rules. Null means the board didn't publish it — not that the scraper missed it.

Can I extract more than 250 records per search?

Yes. NASBA caps each individual query at 250 results, but the scraper bypasses that by sharding on jurisdiction. Pass jurisdictions: ["CA", "NY", "TX", ...] and the scraper runs one search per state, returning up to 250 records each. Combine with firstName for narrower slices.

Does the NASBA CPA Scraper need a proxy?

No. NASBA's public search at cpaverify.org runs without IP filtering or geo-blocking. The scraper hits it directly with default Apify infrastructure.


Need More Features?

Need custom fields, sub-state filters, or a scraper for a different licensure board? File an issue or get in touch.

Why Use the NASBA CPA Scraper?

  • Authoritative — Pulls from cpaverify.org, the official NASBA registry maintained by the State Boards themselves
  • Detailed — Returns 20+ fields including issue date, expiration, CPE-ID, contact location, and disciplinary flags — most CPA scrapers stop at name and license number
  • Honest about limits — Documents the 250-row per-query cap up front and gives you the sharding tools to work around it, instead of pretending it doesn't exist