Land Investor: Parcel Lookup Plugin

Custom WordPress REST API plugin powering a US property data platform for real estate investors - CoreLogic parcel lookups by APN or address, FIPS-based county coverage with named error fallback, Twilio SMS owner outreach, Stripe metered credit system, AWS S3 aerial imagery, and result caching to prevent redundant API calls.

Overview

PropTech / Real Estate - land investing and acquisition

Real estate investors - particularly land investors operating at scale - need reliable access to property ownership records across multiple US counties and states. Public sources are fragmented: each county assessor maintains their own records in different formats, with different levels of online accessibility. CoreLogic aggregates this into a unified API, but integrating it into a usable platform requires solving several non-trivial problems simultaneously.

The FIPS county coverage problem is the one most integrations get wrong. CoreLogic does not cover every US county. Without a coverage check, a user searching a property in an unsupported county receives a generic ‘no parcel found’ error that looks identical to a search that simply returned no results - leaving them uncertain whether the parcel does not exist or the platform does not support that jurisdiction. That ambiguity erodes trust in the data quality of the entire platform.

WordPress REST API Custom Namespace

Custom REST API namespace (parcel-facts/v1) with endpoints for parcel search by APN, address lookup, FIPS data retrieval, usage statistics, and credit management. The frontend makes calls to these endpoints rather than directly to CoreLogic - keeping API credentials server-side and centralizing business logic for credit deduction, caching, and error handling in the plugin layer rather than client-side JavaScript.

Dual Parcel Lookup Modes

APN search sends a FIPS + APN combination to CoreLogic’s parcels API endpoint. Address search sends the address string and may return multiple candidate parcels, requiring the frontend to present options. Both modes share a result storage layer and a caching check - before making any external API call, the plugin checks whether that parcel already exists in the local database.

Result Caching Layer

Previously-fetched parcel data served from a local custom database table without consuming a credit or making an external API call. If a previous user has already looked up the same APN or address, the cached result is returned immediately. Two benefits: reduced API costs as the platform scales, and instant repeat lookups for users revisiting a property they have previously researched.

FIPS County Coverage with Named Error Fallback

CoreLogic’s parcel coverage is not universal. When an address search returns no CoreLogic parcel results, the plugin falls back to the CoreLogic place API, extracts the county and state from the geocode response, looks that county up in the unsupported FIPS table, and returns a specific “county not yet covered” message naming the county and linking to the coverage documentation. Users receive actionable information instead of a generic failure.

Twilio SMS Owner Outreach

The contact_owner endpoint accepts a parcel ID and a message, looks up owner contact data from the DataTree API, and dispatches the message through a Twilio templated SMS. Property investors can send consistent, professional outreach messages to landowners directly from within the platform without composing each one from scratch.

Stripe Metered Credit System

Users purchase credit bundles at different sizes, with credit balance stored in user meta and decremented on each successful parcel lookup. Trial users receive a limited number of free lookups with specific handling for trial-tier searches, including reduced data return. Stripe webhooks manage subscription state changes - upgrades, cancellations, and renewals - updating credit allocation accordingly. Subscription tier management via Restrict Content Pro.

AWS S3 Aerial Imagery

Google Maps Static API images fetched per parcel, stored via AWS SDK S3Client, and retrieved via signed URLs. Aerial imagery for each looked-up parcel served securely without exposing the Google Maps API key or S3 bucket structure to the client.

The Land Investor Parcel Lookup Plugin is one of the most integration-dense plugins in this portfolio - seven external services coordinated through a custom WordPress REST API layer, with business logic (credit deduction, caching, FIPS fallback) managed in the plugin rather than the frontend. The FIPS graceful fallback in particular represents the difference between a plugin that handles the common case and one that handles the real-world edge cases that determine whether users trust the platform.

Client: Land Investor

Location: United States

The Challenge & Solution

Authoritative Property Data Across the US - With Metered Access and Graceful Failure

Real estate investors - particularly land investors operating at scale - need reliable access to property ownership records across multiple US counties and states. Public sources are fragmented: each county assessor maintains their own records in different formats, with different levels of online accessibility. CoreLogic aggregates this into a unified API, but integrating it into a usable platform requires solving several non-trivial problems simultaneously.

The FIPS county coverage problem is the one most integrations get wrong. CoreLogic does not cover every US county. Without a coverage check, a user searching a property in an unsupported county receives a generic ‘no parcel found’ error that looks identical to a search that simply returned no results - leaving them uncertain whether the parcel does not exist or the platform does not support that jurisdiction. That ambiguity erodes trust in the data quality of the entire platform.

WordPress REST API Custom Namespace

Custom REST API namespace (parcel-facts/v1) with endpoints for parcel search by APN, address lookup, FIPS data retrieval, usage statistics, and credit management. The frontend makes calls to these endpoints rather than directly to CoreLogic - keeping API credentials server-side and centralizing business logic for credit deduction, caching, and error handling in the plugin layer rather than client-side JavaScript.

Dual Parcel Lookup Modes

APN search sends a FIPS + APN combination to CoreLogic’s parcels API endpoint. Address search sends the address string and may return multiple candidate parcels, requiring the frontend to present options. Both modes share a result storage layer and a caching check - before making any external API call, the plugin checks whether that parcel already exists in the local database.

Result Caching Layer

Previously-fetched parcel data served from a local custom database table without consuming a credit or making an external API call. If a previous user has already looked up the same APN or address, the cached result is returned immediately. Two benefits: reduced API costs as the platform scales, and instant repeat lookups for users revisiting a property they have previously researched.

FIPS County Coverage with Named Error Fallback

CoreLogic’s parcel coverage is not universal. When an address search returns no CoreLogic parcel results, the plugin falls back to the CoreLogic place API, extracts the county and state from the geocode response, looks that county up in the unsupported FIPS table, and returns a specific “county not yet covered” message naming the county and linking to the coverage documentation. Users receive actionable information instead of a generic failure.

Twilio SMS Owner Outreach

The contact_owner endpoint accepts a parcel ID and a message, looks up owner contact data from the DataTree API, and dispatches the message through a Twilio templated SMS. Property investors can send consistent, professional outreach messages to landowners directly from within the platform without composing each one from scratch.

Stripe Metered Credit System

Users purchase credit bundles at different sizes, with credit balance stored in user meta and decremented on each successful parcel lookup. Trial users receive a limited number of free lookups with specific handling for trial-tier searches, including reduced data return. Stripe webhooks manage subscription state changes - upgrades, cancellations, and renewals - updating credit allocation accordingly. Subscription tier management via Restrict Content Pro.

AWS S3 Aerial Imagery

Google Maps Static API images fetched per parcel, stored via AWS SDK S3Client, and retrieved via signed URLs. Aerial imagery for each looked-up parcel served securely without exposing the Google Maps API key or S3 bucket structure to the client.

Challenge & Solution
Dejan Markovic
Dejan Markovic WordPress Architect
Best experience I've had to date with someone from Codeable. Dejan and his team jumped on a critical project over a weekend and had it sussed and patched on a Sunday; by Monday evening a fix was fully implemented. The team exceeded my expectations and I will be using them for all of my development needs going forward.
Eric R. | CEO & Founder, carsandcoffeeevents.com