US STR Permit Registry & Market Evidence
Pricing
from $2.40 / 1,000 results
US STR Permit Registry & Market Evidence
Check 1–25 addresses against complete official STR permit queries, export normalized records across 32 US jurisdictions, or reconcile rights-bound market observations. Includes source links, publisher and retrieval clocks, receipts, and opt-in change monitoring; not a legal determination.
Pricing
from $2.40 / 1,000 results
Rating
0.0
(0)
Developer
Bryan
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
STR Permit Registry — Reconciled Official Short-Term Rental Evidence
This Actor refines fragmented official government permit, licence, registration, eligibility, address,
and parcel data into one source-bound record model. It preserves publisher semantics: an internal row or
address identifier stays a source_record_id, never a fabricated permit_id. Complementary official rows
are coalesced by stable identity, newest publisher evidence wins, older rows fill only empty fields, and
disagreements remain visible conflicts. CivicDataForge differentiates on that custody trail, privacy
stripping, honest nulls, complete-scope monitoring where supported, and hash-bound evidence and change
receipts for compliance, property diligence, and enforcement research.
One address in, one source-bound answer out
Set outputMode to address_evidence, choose exactly one city, and provide 1-25 addresses. The Actor fetches the complete selected publisher query and returns one row per submitted address:
EVIDENCE_FOUND— exact normalized address match in the published source;REVIEW_REQUIRED— invalid input or a plausible non-exact candidate that needs human review;NO_PUBLISHED_MATCH— no exact match in the complete selected publisher query;SCOPE_INCOMPLETE— reserved for bounded-file evaluations, never emitted as a complete-source negative.
Every decision includes the source, observation time, scope completeness, match basis, record fingerprints where present, and a deterministic decision_receipt_hash. A no-published-match result is not proof of illegality, ineligibility, or absence from every authority.
{"outputMode": "address_evidence","cities": ["orlando"],"addresses": ["1100 Briercliff Drive, Orlando, FL"]}
Reconcile lawful market observations without importing a competitor
Set outputMode to market_evidence to join independently acquired official, openly licensed,
customer-authorized, or contracted market observations to one complete official registry. CivicDataForge
does not promote a listing claim into a government permit: the output labels exact permit claims,
exact-address evidence, conflicts, ambiguous identities, coordinate-only discovery candidates, and honest
no-match results separately.
Every market source must carry a source-rights receipt recording its acquisition method, evidence URL,
review clock, and an allowed commercial-use and redistribution basis. review_required and not_allowed
fail closed before any customer row is emitted. Host names, owner names, email addresses, phone numbers,
payout data, guest data, and messages are rejected at any input depth. URLs containing embedded credentials
or secret-bearing query parameters are also rejected instead of being copied into receipts. Google or another search engine may help find
an official publisher, but the production source URL and rights evidence must point to the actual publisher
or authorized provider.
{"outputMode": "market_evidence","cities": ["orlando"],"marketSources": [{"source_id": "customer-pms-export","publisher": "Customer-authorized property management system","source_url": "https://customer.example/export","access_method": "customer_authorized","observed_at": "2026-08-25T12:00:00.000Z","rights": {"commercial_use": "allowed","redistribution": "allowed","basis": "The customer authorized processing and return of its portfolio records.","evidence_url": "https://customer.example/authorization","reviewed_at": "2026-08-25T12:00:00.000Z","asserted_by": "customer"},"observations": [{"reference_id": "property-1","platform": "customer-pms","listing_id": "listing-1","claimed_permit_id": "STR-1118212","address": "120 E Hazel Street, Orlando, FL","address_precision": "exact","observed_at": "2026-08-25T12:00:00.000Z"}]}]}
The Actor fetches the complete selected official registry itself. It accepts the market observations as a
rights-bound packet, returns one reconciliation row per observation, and writes a hashed
MARKET-EVIDENCE-MANIFEST. Approximate addresses never participate in automatic address matching, and
coordinates within 100 metres remain review candidates rather than proof.
32 cities live, all data-layer verified + freshness-gated (updated 2026):
| City | Status | Owner | Expiration | Parcel |
|---|---|---|---|---|
| Seattle, WA | ✅ | — | ✅ | — |
| Orlando, FL | ✅ | ✅ | ✅ | ✅ |
| New Orleans, LA | ✅ | ✅ | — | — |
| Denver, CO | ✅ | — | ✅ | ✅ |
| Chicago, IL | ✅ | ✅ | ✅ | — |
| Marin County, CA | ✅ | ✅ | — | ✅ |
| Norfolk, VA | — | — | — | — |
| Nashville, TN | ✅ | ✅ | ✅ | ✅ |
| Osceola County, FL | ✅ | ✅ | ✅ | — |
| Polk County, FL | ✅ | ✅ | ✅ | ✅ |
| Austin, TX | ✅ | — | — | — |
| Houston, TX | ✅ | — | ✅ | — |
| Sacramento, CA | ✅ | ✅ | ✅ | — |
| San Bernardino County, CA | ✅ | ✅ | ✅ | ✅ |
| Bend, OR | — | ✅ | — | ✅ |
| Aspen, CO | — | ✅ | — | ✅ |
| Philadelphia, PA | ✅ | ✅ | ✅ | ✅ |
| Albuquerque, NM | ✅ | ✅ | ✅ | — |
| Asheville, NC | ✅ | ✅ | — | ✅ |
| Louisville, KY | — | ✅ | — | — |
| Arlington, TX | ✅ | ✅ | — | — |
| San Diego, CA | — | ✅ | ✅ | — |
| Scottsdale, AZ | — | ✅ | — | — |
| Huntington Beach, CA | — | — | ✅ | ✅ |
| Coconino County, AZ | — | ✅ | — | ✅ |
| San Juan County, WA | ✅ | ✅ | — | ✅ |
| Chattanooga, TN | ✅ | — | ✅ | — |
| Boston, MA | ✅ | — | — | ✅ |
| Las Vegas, NV | ✅ | ✅ | ✅ | ✅ |
| Kansas City, MO | ✅ | — | ✅ | ✅ |
| Washington, DC | ✅ | — | ✅ | ✅ |
| Honolulu, HI | ✅ | — | ✅ | ✅ |
Field coverage reflects exactly what each city publishes — never faked; if a city doesn't publish a field it's null.
What you get (unified schema)
| field | example |
|---|---|
permit_id | STR-1118212 |
source_record_id | stable publisher row identity when no public permit number exists |
record_kind | publisher-semantic type: permit, licence, eligibility, business licence, or NUC certificate |
identifier_kind | distinguishes a real permit/licence number from a source-record identity |
status | Active / Inactive / License Issued - Active / Closed |
address | 120 E HAZEL ST, Orlando, FL |
owner_or_operator | JOSHUA COLORADO (where published) |
parcel | 0510235019000 (Denver) |
property_type | Short Term Rental / Single Family Home |
expiration_date | 2026-08-25 |
issued_date | 2025-05-23 (where published) |
city / state | Orlando / FL |
source_url | the city open-data endpoint the record came from |
evidence_sources | every official source that contributed to the reconciled record |
field_provenance | source responsible for each normalized field |
reconciliation_conflicts | disagreements retained for review, never silently overwritten |
source_updated_at | publisher clock where the transport exposes one |
source_content_sha256 | exact content digest for file-based sources |
raw | full original record (personal phone/email stripped for privacy) |
Records are ordered so current/active permits surface first, and you can filter to active-only.
Who uses this
- STR analytics & data platforms — join permit legality onto listing data.
- Compliance vendors & municipalities — enforcement-side address/parcel matching.
- Property diligence teams — verify whether a property's rental permit is published as active.
- Researchers and market analysts — study licensed supply and permit-status changes.
Match a property portfolio
Need permit evidence for a list of properties instead of a whole-city export? Start with the CivicDataForge Permit Match Audit. One accepted proof-of-fit matches up to 25 submitted addresses in one supported jurisdiction for $99. The delivered evidence bundle separates exact published matches, human-review candidates, invalid input, and honest no-match findings; it also retains official source links, record fingerprints, and a hash-bound manifest.
The founding 30-day monitoring pilot is $500 for one supported jurisdiction and up to 500 submitted addresses, with a complete baseline, one scheduled comparison, change rows, integrity quarantine, and one buyer-selected handoff design. The $99 audit is credited toward an accepted $500 pilot. A no-match is never presented as proof that a property is illegal or ineligible.
Input
{ "cities": ["orlando"], "status": "active", "maxRecordsPerCity": 25, "snapshot": false }
That bounded example is the safest first run. It returns useful records quickly and writes hashed
RUN-RECEIPT and CHANGE-RECEIPT objects alongside the dataset. The run receipt states that the
coverage is bounded; it never presents a capped pull as a complete registry.
Complete change monitoring
Monitoring is deliberately stricter than an ordinary lookup. It is opt-in, is stored in a named key-value store inside the calling Apify account, and accepts only complete selected-city pulls:
{"cities": ["orlando"],"status": "all","maxRecordsPerCity": null,"resolveJurisdiction": true,"snapshot": true}
Run that exact input on a schedule. The first healthy run creates a version-3 baseline. Later runs compare only with a baseline having the same city, status filter, and jurisdiction-resolution setting. A published permit+unit pair remains stable across address corrections. When a publisher reuses one group licence across multiple properties without unit IDs, address remains part of identity so valid properties are not merged. Intraday runs have append-only timestamped keys and cannot overwrite one another.
The change receipt reports appeared, disappeared, status-changed, and other tracked-field changes. Each
accepted comparison also stores the complete machine-readable before/after change rows behind the
full_changes_key in the receipt. Count collapse, empty results, field loss, or publisher-schema drift
quarantines the candidate snapshot: its diagnostic receipt is retained, but it cannot replace the last
healthy baseline or become a confirmed customer change feed.
If snapshot is true while maxRecordsPerCity is set, the run fails before fetching data. This is an
intentional integrity gate: a capped page is not evidence that records outside the page disappeared.
Changing active to all creates a separate baseline instead of producing a false diff.
At pay-per-result pricing, complete pulls can cost materially more than the 25-row example. Start with one jurisdiction, inspect its complete record count and cost, and set an Apify spending limit before scheduling. The limit must cover every record in the selected complete pull. If Apify exposes a paid-dataset ceiling that is lower than the fetched record count, snapshot monitoring fails before storing a new baseline or receipt instead of labeling a platform-truncated dataset complete.
Receipts and automation
RUN-RECEIPTbinds the selected cities, filters, coverage, counts, monitoring state, and change-receipt hash.CHANGE-RECEIPTsaysdisabled,complete_baseline_created,compared_with_prior_complete_snapshot,integrity_quarantined, orcompleted_with_quarantined_scopes; it carries summaries plus the keys and hashes of full changes.- The named
str-registry-history-v3store retains append-only snapshots, full before/after change rows, and quarantined candidates. Version-2 history is left intact rather than silently reinterpreted. - Each receipt contains a canonical SHA-256 so downstream systems can detect alteration.
- Use Apify schedules for recurrence and webhooks to route the receipt into Slack, email, a database, or a review queue.
Customer-owned case workflow
Address-evidence mode can also set caseWorkflow to true. The Actor then writes a portable
CASE-BUNDLE with one case per caller reference. Each case binds the current decision receipt to a
hashed subject reference and a hash-chained human-disposition history; the case file does not store
the submitted address. Customers retain the bundle in their own system and return applicable
priorCases on the next run, avoiding a shared developer-owned property watchlist.
caseActions use optimistic locking and require a reviewer reference, reason, timestamp, expected
version, and expected case receipt. Forged or stale writes fail closed. A changed official-source
decision automatically reopens a resolved case, preserving the earlier disposition and the complete
transition chain instead of silently overwriting it.
Optional webhookUrl and secret webhookSecret inputs deliver the exact bundle to a public HTTPS
endpoint using one stable idempotency key, HMAC-SHA256 signing, and up to three attempts. Internal or
IP-literal targets, redirects, embedded credentials, and non-HTTPS endpoints are rejected. The
redacted WEBHOOK-DELIVERY receipt distinguishes downstream acceptance from transport failure.
The workflow records evidence and human handling; it does not send enforcement letters, collect tax, decide illegality, or replace municipal due process.
Source & legality
Data comes from official municipal open-data portals (published for public reuse), accessed logged-out. Source-change signals are checked every 6 hours; the complete customer file is rebuilt and atomically replaced daily, with a forced all-source reconciliation weekly and a signed archive monthly. A government publisher may update less often, so each record exposes publisher time when observable separately from our fetch time. Personal contact fields (phone/email) are stripped from output; owner name and property address are standard public permit-record fields.
This product is not a consumer report and must not be used to determine an individual's eligibility for credit, insurance, employment, or housing. Hilton Head and Beaufort are not available because South Carolina law restricts commercial-solicitation uses of personal information obtained from public bodies.