BetaPermitPull API is in private beta. Full access by invitation while we onboard early integration partners.

Request access

API · Developer access

Build PermitPull
into your product.

Subscriptions and pay-as-you-go credits for embedding the PermitPull research engine into your app, your CRM, or your customer-facing tools. JSON output, no PermitPull branding, hard stop at cap — never an overage charge.

10 free sandbox searchesHard stop at cap, no surprisesPublic docs at /api-plans/docs

Subscriptions

Free

Sandbox

Try it. No card, no signup.

Free

10 searches · lifetime

  • 10 searches lifetime
  • Same research engine as paid tiers
  • API key from /account/api-keys
  • Public sandbox endpoint
Recommended

Most popular

Developer

Solo builders, side projects, prototypes.

$1,350/yr

$113/mo billed annually

Save 24% vs monthly

  • 300 searches/month
  • 10 requests/minute rate limit
  • Same research engine as Sandbox
  • Email support
  • Cancel anytime

For teams

Business

Solar apps, CRMs, workflow tools at scale.

$3,400/yr

$283/mo billed annually

Save 29% vs monthly

  • 1,000 searches/month
  • 60 requests/minute rate limit
  • Usage dashboard
  • Priority support
  • All Developer features

What a request looks like

One endpoint. One key. Two seconds.

POST an address and a job type. Get back the same structured report your customers see in the app — every fee, every form, every code flag.

Request

curl https://api.permitpull.ai/v1/research \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"address": "123 Main St, Springfield, IL 62701",
"job_type": "roof replacement",
"occupancy_type": "residential",
"user_type": "contractor"
}'

Response

{
"id": "00000000-0000-0000-0000-000000000000",
"jurisdiction": {
"name": "Sangamon County, IL",
"code_edition": "2021 IRC",
"phone": "+1-555-867-5309"
},
"permit_required": true,
"permits": [
{
"type": "Building Permit",
"issuer": "Sangamon County Building Safety",
"fee": "$108.00",
"fee_source": "ResidentialPermitFees.pdf"
}
],
"fees": { "total_estimated": "$108.00", "breakdown": [] },
"forms": [],
"timeline": "3-5 business days for issuance",
"inspections": [],
"code_flags": [],
"metadata": {
"tier": "developer",
"searches_remaining": 287,
"rate_limit_remaining": 9
}
}

Example response · abbreviated. Full schema at /api-plans/docs.

API · Pay-as-you-go

Credit packs

One-time purchase. Credits never expire. Standalone — does not combine with Developer or Business subscription quotas.

Basic

$99
Searches
150
Per search
$0.660

Save $50 — Developer pays for itself

Standard

$174
Searches
300
Per search
$0.580

Developer matches volume for $25 less

Plus

$318
Searches
600
Per search
$0.530

Save $169 with Developer · 2× allowance

Pro

$480
Searches
1,000
Per search
$0.480

Save $331 — full Developer plan included

Growth

$1,050
Searches
2,500
Per search
$0.420

Scale

$1,750
Searches
5,000
Per search
$0.350

Volume

$3,000
Searches
10,000
Per search
$0.300

Questions

What counts as a search?
One POST to /v1/research that returns a report. Every successful response counts. Failed requests (4xx, 5xx) do not.
What happens at the cap?
Hard stop. The 1,001st request on Business returns HTTP 429. No surprise overage. Upgrade tiers, buy a credit pack, or wait for the next billing cycle.
Can I combine credits with a subscription?
No. Credit packs are standalone — built for callers who don’t want recurring billing. If you have a subscription, your monthly allowance is the counter.
Do credits expire?
No expiration. A 10,000-search Volume pack bought today is still valid five years from now.
Is there an SLA?
Sandbox + Developer ship without an SLA. Business tier includes priority support — best-effort response within one business day. Enterprise SLAs are case-by-case.
Can I get a refund?
Subscriptions: pro-rated refund through the Stripe Customer Portal. Credit packs: full refund within 14 days if zero credits have been used. After usage, no refund.

Still evaluating?

Try it free. Decide after.

10 sandbox searches. No card. Generate a key on your dashboard, run a real call against the production engine, then pick a plan.