Webhook and API
Every subscription can push each morning's matches to your own endpoint as signed JSON, and read any day's batch from a small JSON API.
Webhook
Set a URL in your settings. When your digest goes out we POST the same rows as JSON:
POST https://your-endpoint.example.com/hooks/nrp
Content-Type: application/json
X-NRP-Timestamp: 1793280000
X-NRP-Signature: sha256=<hex HMAC-SHA256 of "<timestamp>." + raw body>
X-NRP-Test: 0
The key is the webhook secret shown in your settings. X-NRP-Test: 1 marks the sample the "Test webhook" button sends. We wait up to 10 seconds for a 2xx and do not retry, so return quickly and queue your own work. Up to 2,000 rows per call; the full list is always in the email's CSV.
Verify in Python
import hmac, hashlib
def verify(raw_body: bytes, headers: dict, secret: str) -> bool:
ts = headers["X-NRP-Timestamp"]
sig = headers["X-NRP-Signature"].removeprefix("sha256=")
mac = hmac.new(secret.encode(), ts.encode() + b"." + raw_body, hashlib.sha256)
return hmac.compare_digest(mac.hexdigest(), sig)
API
Create a key in your settings, then:
GET https://newrestaurantpermits.com/nrp/v1/events?date=2026-10-29
X-API-Key: nrp_...
date: the digest day (defaults to today, Eastern). Returns that day's rows filtered by your watches.all=1: the whole day's batch, unfiltered.- Rate limit: 120 requests per hour per key. Errors: 401 for a bad or inactive key, 429 over the limit, 400 for a bad date.
Response
{
"date": "2026-10-29",
"count": 1,
"events": [{
"event": "liquor_applied",
"event_label": "New liquor license application",
"event_date": "2026-10-26",
"first_seen": "2026-10-29",
"key": "liquor_applied|TX:669286",
"venue_label": "Restaurant",
"url": "https://newrestaurantpermits.com/r/tx-669286-twin-peaks-grand-prairie/",
"record": {
"id": "TX:669286", "st": "TX", "agency": "TABC", "kind": "liquor",
"ltype": "MB,FB", "ltype_label": "Mixed Beverage Permit + Food and Beverage Certificate",
"venue": "restaurant", "status": "Pending", "stage": "applied", "transfer": false,
"trade": "Twin Peaks", "owner": "Summit Twin Restaurant Grand Prairie LLC", "owner_entity": true,
"addr": "3120 S State Hwy 161", "addr2": "", "city": "Grand Prairie", "county": "Dallas",
"zip": "75052", "lat": 32.7, "lon": -96.9, "mail": "", "phone": "",
"filed": "2026-10-26", "seen": "2026-10-29", "chain": false,
"lookup": "https://..."
}
}]
}
Fields
event: one ofplan_review,liquor_applied,food_licensed,liquor_issued,ownership_change.event_dateis the agency's date;first_seenis the day the record first appeared in its public file.urlis the filing's page on this site.record.owneris the applicant as the agency lists it;owner_entitysays whether it reads as a company.phoneandmail(mailing address) are filled only when the agency publishes them, which is rare.chain: true when the same trade name is on three or more premises in our data.
Wire it into your CRM
Webhook and API included at $25 a month. 7 days free.