Discover/Floridaroof API
live

Floridaroof APIfloridaroof.com

Search the Florida Roofing and Sheet Metal Contractors Association directory to find qualified roofing contractors in your area, then access detailed information about each member including their credentials and contact details. Quickly locate licensed professionals for your roofing projects without manually browsing the association's website.

Endpoint health
monitored
get_member_detail
search_members
Checks pendingself-healing
Endpoints
2
Updated
2h ago
Try it
Page number for pagination (1-based). Each page returns up to 10 results.
Member category filter by numeric ID. Empty string means all categories.
Location type filter for interpreting the search text. Empty string means no filter.
Search keyword — typically a city name, company name, or general roofing term.
api.parse.bot/scraper/f4dab63c-62b1-4cf3-bada-0166506386a2/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/f4dab63c-62b1-4cf3-bada-0166506386a2/search_members?category=16&location=city&searchtext=Tampa' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace floridaroof-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: FRSA member directory — search roofing contractors and retrieve details."""
from parse_apis.floridaroof_com_api import FRSA, MemberCategory, LocationType, MemberNotFound

client = FRSA()

# Search for roofing contractors in Tampa filtered to FL contractors
for member in client.members.search(searchtext="Tampa", category=MemberCategory.CONTRACTOR_IN_FL, limit=5):
    print(member.company_name, member.city, member.phone)

# Drill into a single result for full details
member_summary = client.members.search(searchtext="Orlando", location=LocationType.CITY, limit=1).first()
if member_summary:
    detail = member_summary.details()
    print(detail.company_name, detail.email, detail.website, detail.category)

# Handle member not found
try:
    detail = client.members.search(searchtext="Jacksonville", category=MemberCategory.CONTRACTOR_IN_FL, limit=1).first()
    if detail:
        full = detail.details()
        print(full.company_name, full.street_address, full.city, full.state, full.zip_code)
except MemberNotFound as exc:
    print(f"Member not found: {exc.profile_path}")

print("exercised: members.search / member_summary.details / MemberCategory enum / LocationType enum / MemberNotFound error")
All endpoints · 2 totalmissing one? ·

Search the FRSA member directory by keyword (city, company name, or general term), optionally filtered by location type and member category. Returns paginated results with 10 members per page including company name, address, phone, and profile URL. Results are auto-iterated across pages.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-based). Each page returns up to 10 results.
categorystringMember category filter by numeric ID. Empty string means all categories.
locationstringLocation type filter for interpreting the search text. Empty string means no filter.
searchtextrequiredstringSearch keyword — typically a city name, company name, or general roofing term.
Response
{
  "type": "object",
  "fields": {
    "page": "integer",
    "results": "array of member summary objects with company_name, profile_url, street_address, city, state, zip_code, phone",
    "source_url": "string",
    "total_results": "integer or null"
  },
  "sample": {
    "data": {
      "page": 1,
      "results": [
        {
          "city": "Tampa",
          "phone": "+1 (555) 012-3456",
          "state": "FL",
          "zip_code": "33610-4918",
          "profile_url": "https://www.floridaroof.com/TAMPA-ROOFING-CO-INC-10-1145.html",
          "company_name": "TAMPA ROOFING CO INC",
          "street_address": "1700 E Ellicott St"
        }
      ],
      "source_url": "https://www.floridaroof.com/member-search/index?searchtext=Tampa&location=&category=16",
      "total_results": 39
    },
    "status": "success"
  }
}

About the Floridaroof API

The Floridaroof API on Parse exposes 2 endpoints for the publicly available data on floridaroof.com. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.