Broward County FL Real Estate MCP avatar

Broward County FL Real Estate MCP

Pricing

from $10.00 / 1,000 mcp tool calls

Go to Apify Store
Broward County FL Real Estate MCP

Broward County FL Real Estate MCP

MCP server for Broward County (FL) Property Appraiser records: property, sales, commercial, land, subdivision, time-share and tangible searches, parcel details, and a tax estimator.

Pricing

from $10.00 / 1,000 mcp tool calls

Rating

0.0

(0)

Developer

R.L.

R.L.

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

6 hours ago

Last modified

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 is the Broward County property data MCP server?

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 it?

  • 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.

Tools & data you can pull

ToolWhat it does
search_propertiesSearch by owner name, address, or folio (optional city filter, pagination).
get_parcel_detailsFull record for a folio: owners, site & mailing address, legal description, zoning, use code, assessed/market/land/building values, exemptions, and sales history.
suggest_addressesAutocomplete owner/address strings to build a precise query.
search_salesRecorded sales comps by type, date range, price, beds/baths, qualified-only.
search_commercialCommercial properties by use code + city.
search_landLand parcels by use code + city.
search_subdivisionFind subdivision names, or list all parcels within a subdivision.
search_timeshareList time-share properties.
search_tangibleTangible Personal Property (business) accounts by name or address.
estimate_taxesEstimate annual property tax from a taxable value using the current millage rate.
list_commercial_cities / list_commercial_use_codesReference lists for the commercial/land searches.

A static millage-codes resource (bcpa://reference/millage-codes) maps each Broward municipality to its Tax Estimator code.

Connect from your LLM 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.
  • TokenSettings → 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 asyncio
from fastmcp import Client
URL = "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())

Example: search, then fetch details

search_* tools return { "total": N, "results": [...] }. Feed a folioNumber into get_parcel_details for the full record:

{
"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" }
]
}

How much does it 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 — one tool call returns a full result set (up to the source's 500-row cap).

Run locally (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, disclaimer & support

  • Is this legal? It reads the same public records BCPA already publishes on its website. Use the data in accordance with BCPA's terms and Florida public-records law. Values are for tax-roll purposes and are not final until certified.
  • What area is covered? Broward County, Florida only (Fort Lauderdale, Hollywood, Pompano Beach, Pembroke Pines, Miramar, Coral Springs, and all other Broward municipalities).
  • Do I need an Apify account? Yes — to get an endpoint URL and API token. A free account is enough to start.
  • Feedback / bugs? Open an issue on the Actor's Issues tab.

Resources