contractor.id profiles
Contractor public profile URLs at contractor.id and the JSON endpoint behind them.
Every ContractorsNearMe profile also has a public page at contractor.id, and the profile data is available as JSON without a key.
URLs
- Profile page:
https://contractor.id/<state>/<city>/<slug>, for examplehttps://contractor.id/tx/austin/<slug>. A shorthttps://contractor.id/<slug>redirects there. - A contractor who claims a handle also gets
https://contractor.id/<handle>. See Claim your profile.
Profile JSON
GET https://contractorsnearme.ai/api/agents/contractor-id/profile/<slug> (the same path also works on https://contractor.id)
Returns { "contractor": { … } } with contractor_id, company_name, slug, city, state_code, avg_rating, is_verified, about_text, phone, website, primary_trade, profile_url, photos[] (url, description), services[], reviews[] (rating, body, reviewer_name), certifications[], promotions[] and service_areas[]. This endpoint leaves out email addresses.
- Unknown slug:
404{"error":"Contractor profile not found"}. Bad slug:400. - CORS is open (
*), so browser apps can call it. Cached for up to an hour. Limit: 100 requests a minute per IP.
Check whether a profile is claimed
GET https://contractorsnearme.ai/api/agents/contractor-id/claims/by-slug/<slug> returns {"claim": null} when nobody has claimed the handle for that profile.
Don’t use
/api/agents/contractors, /api/agents/itbs and /api/agents/leads on contractorsnearme.ai and contractor.id are retired. They redirect to a sign-in page. Some older ContractorsNearMe pages still list them. Use the MCP server instead.

