rics.org APIrics.org ↗
Search the RICS-regulated surveying firm directory by location, firm name, keyword, and service type. Returns firm contact details, addresses, and service facets.
curl -X GET 'https://api.parse.bot/scraper/fadc5416-5581-4a1f-8b37-cd12a66e5c02/search_firms?page=1&location=London&page_size=25' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for RICS regulated surveying firms by location, firm name, or keyword. Returns paginated results with firm contact details, service areas, and available service filter facets.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| keyword | string | Keyword search (e.g. 'party wall', 'valuation', 'building survey'). |
| location | string | Location name to search within (e.g. 'London', 'Manchester', 'Birmingham'). |
| firm_name | string | Firm name to search for. |
| page_size | integer | Results per page. |
| service_id | string | Service type ID for filtering results. IDs available from the service_facets field in search results. |
{
"type": "object",
"fields": {
"page": "integer - current page number",
"firms": "array of firm objects with firm_id, office_id, firm_name, rics_regulated, address, city, county, postcode, telephone, email, website_url, about_us, offers_free_advice, target_residential, target_commercial, has_logo",
"page_size": "integer - results per page",
"page_count": "integer - total number of pages",
"total_results": "integer - number of firms returned on the current page",
"service_facets": "array of service filter options with id, name, and count"
},
"sample": {
"data": {
"page": 1,
"firms": [
{
"city": "London",
"email": "[email protected]",
"county": "Greater London",
"address": "123 Main St",
"firm_id": "756940",
"about_us": "RES Property Surveyors is a dynamic property consultancy...",
"has_logo": true,
"postcode": "W11 1AF",
"firm_name": "RES Property Surveyors",
"office_id": "188826",
"telephone": "+1 (555) 012-3456",
"website_url": "https://www.res-prop.com/",
"rics_regulated": true,
"target_commercial": true,
"offers_free_advice": false,
"target_residential": true
}
],
"page_size": 25,
"page_count": 5,
"total_results": 25,
"service_facets": [
{
"id": "110",
"name": "Access for disabled people",
"count": "14"
},
{
"id": "108",
"name": "Access rights",
"count": "45"
}
]
},
"status": "success"
}
}About the rics.org API
The RICS Firms API provides access to the official RICS Find a Chartered Surveyor directory via 2 endpoints, returning firm contact details, addresses, RICS regulation status, and filterable service categories. The search_firms endpoint accepts location, keyword, firm name, and service ID parameters, while get_places returns structured place data to power location autocomplete in search interfaces.
What the API covers
The API exposes the full public content of the RICS regulated firms directory at ricsfirms.com. Each firm record in search_firms results includes fields such as firm_id, office_id, firm_name, rics_regulated, address, city, county, postcode, telephone, email, and website. Results are paginated using page and page_size parameters, with page_count and total_results available to drive pagination UI.
Filtering and facets
search_firms supports four independent filter dimensions: location (a place name such as 'London' or 'Birmingham'), keyword (a service term such as 'party wall', 'valuation', or 'building survey'), firm_name (for direct lookup by firm), and service_id (a structured service type filter). Service IDs are not hardcoded — they come from the service_facets array returned alongside every result set, each facet carrying an id, name, and count. This means you can build a dynamic filter UI directly from live response data without maintaining a static list of service codes.
Location resolution
The get_places endpoint resolves location strings to structured place objects before passing them to search_firms. Each place record contains id, name, parent_name, and box_type_id. The query parameter accepts partial place names for autocomplete-style matching, and an optional country code parameter narrows results to a specific country. This two-step flow — resolve place, then search — mirrors how the official directory handles location input.
Coverage notes
The directory reflects RICS-regulated firms and offices listed on the public ricsfirms.com directory. Data includes contact-level details for individual offices (distinct office_id per location), so multi-office firms appear as separate records. There is no endpoint for individual surveyor profiles or membership credential lookups — coverage is at the firm/office level only.
- Build a 'find a surveyor near me' tool using
locationandservice_idfilters fromsearch_firms - Populate a location autocomplete field with
get_placesbefore submitting a firm search - Aggregate RICS-regulated firms by service category using
service_facetscounts from search results - Compile a contact list of regulated firms in a target city using
city,telephone, andemailfields - Cross-reference firm registration status using the
rics_regulatedflag returned per firm - Filter surveying firms offering specific services (e.g. 'party wall', 'valuation') using the
keywordparameter - Map office coverage across postcodes by extracting
postcodeandcountyfrom paginated results
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does RICS provide an official developer API for the firm directory?+
What does `service_facets` in the `search_firms` response actually contain?+
service_facets includes an id, a human-readable name, and a count indicating how many firms in the current result set offer that service. You pass the id value back as the service_id parameter on a subsequent call to filter results to that service type. The facets reflect the live distribution of the current search, so they update as you change location or keyword filters.Does the API distinguish between different offices of the same firm?+
firm_id and an office_id. A firm with multiple offices will appear as separate records with the same firm_id but distinct office_id values, each with its own address, postcode, telephone, and email fields.Does the API return individual surveyor profiles or membership credentials?+
How does pagination work in `search_firms`?+
page and page_size input parameters. The response includes page_count (total pages available) and total_results (the count of records on the current page). To retrieve all firms matching a query, iterate from page 1 through page_count, keeping keyword, location, and service_id parameters constant across requests.