NASBA CPA License Verifier — Multi-State Accountant Lookup avatar

NASBA CPA License Verifier — Multi-State Accountant Lookup

Pricing

Pay per event

Go to Apify Store
NASBA CPA License Verifier — Multi-State Accountant Lookup

NASBA CPA License Verifier — Multi-State Accountant Lookup

Verify CPA licenses across 53 U.S. jurisdictions from the official NASBA Accountancy Licensee Database. Search by last name, first name, license number, or jurisdiction. Returns status, dates, license type, firm, and contact city/state. Sources directly from cpaverify.org.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

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
}
FieldTypeDefaultDescription
lastNamestring(required)Last name to search. NASBA rejects empty queries.
firstNamestring""First-name filter. Use it when a last name returns the 250-row cap.
licenseNumstring""Specific license number to verify.
jurisdictionsarray[]Two-letter state codes (CA, NY, TX). Empty searches every jurisdiction at once; listing codes runs one shard per state.
do_fetch_detailbooleantrueFetch each licensee's detail page for issue/expiration dates, CPE-ID, and contact location. Disable for a fast metadata-only sweep.
maxItemsinteger10Maximum 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"
}
FieldTypeDescription
licenseeIdintegerNASBA's internal licensee ID
licenseeGeneralIdintegerGeneral ID used in the detail-page URL
lastNamestringLast name as recorded by the State Board
firstNamestringFirst name
middleNamestringMiddle name
maidenstringMaiden name when reported
suffixstringName suffix (Jr., Sr., III)
indivNamestringFull display name
licenseNumstringCPA license / certificate number
licenseTypeDescriptionstringLicense type description
licenseTypeNamestringShort license type code (detail-only)
licenseStatusDescriptionstringStatus (ACTIVE, INACTIVE, REVOKED, LAPSED)
licenseStatusTypestringNormalized status type
activebooleanTrue when the license is currently active
issueDatestringIssue date YYYY-MM-DD (detail-only)
expirationDatestringExpiration date YYYY-MM-DD (detail-only)
jurisdictionAbbreviationstringTwo-letter state code
jurisdictionNamestringFull State Board name
jurisdictionIdintegerNASBA jurisdiction ID
citystringContact city (detail-only)
stateProvincestringContact state (detail-only)
zipstringContact ZIP (detail-only)
countrystringContact country (detail-only)
firmNamestringAssociated CPA firm name
cpeIdstringCPE-ID for continuing-education tracking (detail-only)
ncIdstringNational Candidate ID (detail-only)
disciplinaryActionstringY, N, or "Contact State Board For Details"
disciplinaryActionsarrayAction descriptions when reported
detailUrlstringPublic NASBA detail page URL
lastUpdatedAtstringLast update from the State Board feed (detail-only)
scrapedAtstringWhen 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.

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