Broward County FL Property Records MCP β Owners, Sales & Taxes
Pricing
from $2.00 / 1,000 mcp tool calls
Broward County FL Property Records MCP β Owners, Sales & Taxes
MCP server for Broward County, Florida property records from the Property Appraiser (BCPA): search by owner, address or folio; pull parcel details with values, exemptions and sales history; find sales comps; search commercial, land, subdivision and tangible accounts; estimate property taxes.
Pricing
from $2.00 / 1,000 mcp tool calls
Rating
0.0
(0)
Developer
R.L.
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
0
Monthly active users
2 hours ago
Last modified
Categories
Share
Give your AI agent instant access to Broward County, Florida property records. This Model Context Protocol (MCP) server turns the Broward County Property Appraiser (BCPA) database into clean, ready-to-use tools for property search, owner lookup, parcel details, sales comps, and property-tax estimates β no scraping, HTML parsing, or bot-handling on your side.
Ask Claude, Cursor, or any MCP-compatible agent things like "who owns 1800 N Andrews Ave?", "pull the full record for folio 494234AJ0750", or "list qualified residential sales in Fort Lauderdale over $500k last June" β and get back normalized JSON with owners, addresses, assessed/market values, exemptions, and full sales history.
Running on the Apify platform, it comes with a hosted HTTPS endpoint, standby mode, US proxy rotation, scheduling, and monitoring out of the box.
What does this Broward County property MCP server do?
It's a remote MCP server that exposes the entire Broward County Property Appraiser record search β every vertical the public site offers β as agent tools over Streamable HTTP. Under the hood it calls BCPA's ASP.NET JSON API directly (fast HTTP, no browser), normalizes the raw responses, and collapses indexed sales-history fields into tidy arrays, so your agent gets structured data instead of scraped HTML.
Why use a Broward County property records MCP server?
- Real-estate lead generation β owner names, mailing addresses, and values across all of Broward County.
- Comparable sales & market analysis β filter recorded sales by property type, date range, price, and beds/baths.
- Skip tracing & due diligence β mailing addresses, legal descriptions, homestead/exemption status.
- Property-tax estimation β annual tax from a taxable value and municipality millage rate.
- Drop-in agent tooling β no scraper to build or maintain; just point your LLM at the endpoint.
Which MCP tools does this server expose?
| Tool | What it does |
|---|---|
search_properties | Search by owner name, address, or folio (optional city filter, pagination). |
get_parcel_details | Full record for a folio: owners, site & mailing address, legal description, zoning, use code, assessed/market/land/building values, exemptions, and sales history. |
suggest_addresses | Autocomplete owner/address strings to build a precise query. |
search_sales | Recorded sales comps by type, date range, price, beds/baths, qualified-only. |
search_commercial | Commercial properties by use code + city. |
search_land | Land parcels by use code + city. |
search_subdivision | Find subdivision names, or list all parcels within a subdivision. |
search_timeshare | List time-share properties. |
search_tangible | Tangible Personal Property (business) accounts by name or address. |
estimate_taxes | Estimate annual property tax from a taxable value using the current millage rate. |
list_commercial_cities / list_commercial_use_codes | Reference lists for the commercial/land searches. |
A static millage-codes resource (bcpa://reference/millage-codes) maps each Broward municipality to its Tax Estimator code.
How do I connect it to my AI agent?
The server speaks Streamable HTTP at:
https://<YOUR_USERNAME>--broward-fl-real-estate-mcp.apify.actor/mcp
Authenticate with your Apify API token as a Bearer header. Find both in the Apify Console:
- Endpoint β the Actor's API / Standby tab.
- Token β Settings β API & Integrations.
Authorization: Bearer <YOUR_APIFY_TOKEN>
Pick your client below (replace <YOUR_USERNAME> and <YOUR_APIFY_TOKEN>):
Claude Code
claude mcp add broward-real-estate \--transport http \https://<YOUR_USERNAME>--broward-fl-real-estate-mcp.apify.actor/mcp \--header "Authorization: Bearer <YOUR_APIFY_TOKEN>"
Claude Desktop
Edit claude_desktop_config.json (Settings β Developer β Edit Config). Claude Desktop bridges to remote servers via mcp-remote:
{"mcpServers": {"broward-real-estate": {"command": "npx","args": ["mcp-remote","https://<YOUR_USERNAME>--broward-fl-real-estate-mcp.apify.actor/mcp","--header","Authorization: Bearer <YOUR_APIFY_TOKEN>"]}}}
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):
{"mcpServers": {"broward-real-estate": {"url": "https://<YOUR_USERNAME>--broward-fl-real-estate-mcp.apify.actor/mcp","headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }}}}
VS Code (GitHub Copilot)
Add to .vscode/mcp.json:
{"servers": {"broward-real-estate": {"type": "http","url": "https://<YOUR_USERNAME>--broward-fl-real-estate-mcp.apify.actor/mcp","headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }}}}
Windsurf / other MCP clients
Most clients accept a serverUrl (or url) plus a headers object β use the endpoint and Authorization header above. For stdio-only clients, wrap it with npx mcp-remote <url> --header "Authorization: Bearer <YOUR_APIFY_TOKEN>" as shown for Claude Desktop.
Python (programmatic)
import asynciofrom fastmcp import ClientURL = "https://<YOUR_USERNAME>--broward-fl-real-estate-mcp.apify.actor/mcp"async def main():async with Client(URL, auth="<YOUR_APIFY_TOKEN>") as client:hits = await client.call_tool("search_properties", {"query": "1800 N ANDREWS AVE"})folio = hits.structured_content["results"][0]["folioNumber"]parcel = await client.call_tool("get_parcel_details", {"folio": folio})print(parcel.structured_content)asyncio.run(main())
What does a Broward parcel record contain?
search_* tools return { "total": N, "results": [...] }. Feed a folioNumber into get_parcel_details for the full record β owners, site and mailing address, use code, legal description, zoning, millage code, year built, units, beds/baths, building square footage, the value block, every exemption, the land-calculation rows, a picture path, and a sales history where each sale carries a documentUrl deep link to the recorded deed in Broward Official Records:
{"found": true,"folioNumber": "494234AJ0750","owners": ["AVILES,WILSON", "WILSON AVILES REV TR"],"siteAddress": { "line1": "1800 N ANDREWS AVENUE # 8A", "city": "FORT LAUDERDALE", "zip": "33311" },"useCode": "04 - Condominium","legal": "DRAKE TOWER CONDO UNIT 8A ...","values": { "just": "$315,620", "land": "$31,560", "building": "$284,060" },"exemptions": { "homesteadPercent": "100%", "he1Amount": "$25,000" },"sales": [{ "saleDate": "04/09/2019", "stampAmount": "$100", "deedType": "Warranty Deed","bookAndPageOrCin": "115730117", "saleVerification": "Non-Sale Title Change" }]}
Which Broward municipalities are covered?
Every municipality in Broward County. The tax estimator maps each one to its BCPA millage code, and the same list is served as the bcpa://reference/millage-codes resource β pass a city from this table to estimate_taxes and the code is looked up for you:
| Municipality | Code | Municipality | Code | Municipality | Code |
|---|---|---|---|---|---|
| Coconut Creek | 3212 | Lauderdale Lakes | 2012 | Parkland | 3012 |
| Cooper City | 1013 | Lauderhill | 1912 | Pembroke Park | 0613 |
| Coral Springs | 2812 | Lazy Lake | 1812 | Pembroke Pines | 2613 |
| Dania Beach | 0413 | Lighthouse Point | 1411 | Plantation | 2212 |
| Davie | 2412 | Margate | 1212 | Pompano Beach | 1511 |
| Deerfield Beach | 1112 | Miramar | 2713 | Sea Ranch Lakes | 1611 |
| Fort Lauderdale | 0312 | North Lauderdale | 2912 | Southwest Ranches | 3413 |
| Hallandale Beach | 2513 | Oakland Park | 1712 | Sunrise | 2112 |
| Hillsboro Beach | 1311 | Tamarac | 3112 | Weston | 3312 |
| Hollywood | 0513 | West Park | 3513 | Wilton Manors | 0912 |
| Lauderdale-by-the-Sea | 0211 | Unincorporated | 0012 |
Property and sales searches are not limited to this list β it is the millage lookup for estimate_taxes. Commercial and land searches take BCPA's own city ids, which list_commercial_cities returns.
What do these Broward property terms mean?
- Folio number β BCPA's 12-character parcel ID (e.g.
494234AJ0750). It is the key everysearch_*tool returns asfolioNumberand thatget_parcel_detailstakes. - Just value β the Property Appraiser's estimate of market value as of January 1.
values.justin the output;values.justPriorYearis last year's for comparison. - Assessed (SOH) value β the value after Florida's Save Our Homes cap, which limits annual assessment growth on homesteaded property. Returned as
values.assessedSOH, and it is usually lower than just value. - Homestead exemption β Florida's primary-residence exemption, reported as
exemptions.homesteadFlag,homesteadPercent, and thehe1Amount/he2Amountbands. - Portability β homestead savings carried from a previous Florida home, in
exemptions.portabilityValue. - Millage rate β tax per $1,000 of taxable value.
estimate_taxesreturns the rate, its year, andtaxableValue * rate / 1000. - Qualified sale β an arm's-length transaction BCPA considers usable as a comparable.
search_salesfilters to these by default (qualified_only: true); turn it off to see quitclaims, family transfers and other non-market changes of title. - Tangible Personal Property (TPP) β business equipment, furniture and fixtures, assessed separately from real estate.
search_tangiblecovers these accounts.
How much does this MCP server cost?
This Actor uses Pay Per Event: a flat $0.01 per tool call (tool-call event), plus Apify platform compute. A typical search β open a record flow is two tool calls (about $0.02) plus minimal compute. There are no per-page scraping costs. Search tools are paginated with page / page_size; BCPA caps any single response at 500 rows, which the server fetches once and slices locally, so paging through a result set does not re-hit the source.
How do I run it locally for development?
pip install -r requirements.txt# This machine may not reach BCPA directly; route via a US-exit proxy for local dev:export DEV_PROXY_URL='http://user:pass@host:port'APIFY_META_ORIGIN=STANDBY python -m my_actor
The server listens at http://localhost:3000/mcp. On the Apify platform, DEV_PROXY_URL is unset and the Actor calls BCPA directly, falling back to an Apify US datacenter proxy if a datacenter IP is blocked. See tests/ for a browser-vs-MCP differential test suite that validates output against the live BCPA site.
FAQ
Do I need a BCPA account or API key? No. BCPA publishes these records without a login. You need an Apify account for the endpoint URL and API token β a free one is enough to start.
What area does it cover? Broward County, Florida only, including all 31 municipalities in the table above plus unincorporated Broward. For Florida corporate filings rather than property, see the companion Florida Business Registry MCP Server.
Can I look up who owns an address? Yes β search_properties takes an owner name, a street address, or a folio, and returns folioNumber plus owner and address for each hit. Use suggest_addresses first if you only have a partial string.
Does it return sales history and the actual deeds? Yes. get_parcel_details returns every recorded sale with date, stamp amount, deed type, book/page or CIN, and BCPA's sale verification β and each sale includes a documentUrl deep link to the recorded document in Broward Official Records.
How do I find comparable sales? search_sales filters recorded sales by property type, sub-type, date range, price range, minimum beds and baths, and location, sorted by date or price. It returns only qualified (arm's-length) sales unless you set qualified_only: false.
How is cost bounded? A flat $0.01 per tool call, so a session costs exactly the number of searches and lookups your agent makes. Result-set size does not change the price, and paging through a cached result set does not re-hit BCPA.
Which MCP clients work with it? Any Streamable HTTP client β Claude Code, Claude Desktop (via mcp-remote), Cursor, VS Code Copilot, Windsurf β or FastMCP from Python. Configuration for each is above.
Are the values official? They are BCPA's tax-roll figures, read from the same source the public site serves. They are for tax-roll purposes and are not final until certified. Use the data in accordance with BCPA's terms and Florida public-records law.
Found a bug or need a custom data feed? Open an issue on the Actor's Issues tab.
Resources
- What is Anthropic's Model Context Protocol?
- How to use MCP with Apify Actors
- FastMCP documentation
- Apify MCP server documentation
Did you find this useful?
Rate this actor on Apify! Your feedback helps other users find it and helps us keep improving it.