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.
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'
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")
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.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). Each page returns up to 10 results. |
| category | string | Member category filter by numeric ID. Empty string means all categories. |
| location | string | Location type filter for interpreting the search text. Empty string means no filter. |
| searchtextrequired | string | Search keyword — typically a city name, company name, or general roofing term. |
{
"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.