# Propertyfinder — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search and browse properties across the UAE, view detailed listings with agent and broker information, and discover locations all in one place. Find the perfect property, connect with real estate agents, and explore company profiles to make informed decisions.

**Category:** Real Estate | **Website:** [propertyfinder.ae/](https://propertyfinder.ae/) | **Docs:** [parse.bot/marketplace/fbbc1eca-b1d3-488b-9f95-7ed6f950d083/propertyfinder-ae-api](https://parse.bot/marketplace/fbbc1eca-b1d3-488b-9f95-7ed6f950d083/propertyfinder-ae-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-propertyfinder-ae-api-fbbc1eca/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_agent_details

Get the full profile of a specific agent including transactions, areas of expertise, ratings, and broker affiliation. The slug format is '{name}-{id}' constructed from the slug and id fields returned by search_agents.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | Agent URL slug in format 'name-id' (e.g., 'ryan-morgan-198365'). Construct from search_agents slug + '-' + id fields. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-propertyfinder-ae-api-fbbc1eca/get_agent_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug":"<string>"}'
```

### get_company_details

Get details of a real estate broker company including profile information, description, awards, and agent/property counts. The slug is the urlSlug field from search_companies results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | Company URL slug from search_companies urlSlug field (e.g., 'elite-property-brokerage-4428') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-propertyfinder-ae-api-fbbc1eca/get_company_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug":"<string>"}'
```

### get_location_suggestions

Autocomplete suggestions for locations (cities, communities, buildings). Returns location IDs and names for use as filters in search_properties. Each result includes the location's parent hierarchy.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Location search query (e.g., 'Dubai Marina', 'Downtown', 'Palm Jumeirah') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-propertyfinder-ae-api-fbbc1eca/get_location_suggestions \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"<string>"}'
```

### get_property_details

Fetch full details of a single property listing. Note: Detail pages are protected by AWS WAF and may return blocked status. Use search_properties for comprehensive property data instead.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug_url` | string | Yes | Property URL path from search results details_path field |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-propertyfinder-ae-api-fbbc1eca/get_property_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug_url":"<string>"}'
```

### search_agents

Search for real estate agents. Returns detailed agent profiles including contact info, ratings, transaction history, brokerage details, and areas of expertise. Results are paginated with 20 agents per page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category_id` | string | No | Category filter. |
| `page` | integer | No | Page number for pagination |
| `query` | string | No | Agent name or keyword search |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-propertyfinder-ae-api-fbbc1eca/search_agents \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"category_id":"<string>","page":"<integer>","query":"<string>"}'
```

### search_companies

Search for real estate broker companies. Returns company profiles with agent counts, property counts, awards, and license information. Results are paginated with 20 companies per page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination |
| `query` | string | No | Company name search |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-propertyfinder-ae-api-fbbc1eca/search_companies \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","query":"<string>"}'
```

### search_properties

Search for property listings with filters. Returns comprehensive property data including price, location, agent, broker, images, description, and amenities. Results are paginated with 25 items per page. Supports filtering by location (via ID or slug from get_location_suggestions), price range, area, bedrooms, bathrooms, property type, broker, and sort order. Multiple location IDs can be provided as a comma-separated string to search across several locations simultaneously.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `bathrooms` | string | No | Number of bathrooms filter (e.g., '1', '2', '3') |
| `bedrooms` | string | No | Number of bedrooms filter (e.g., '1', '2', '3') |
| `broker_id` | string | No | Broker/agency ID to filter properties by a specific company. Obtain from broker.id in search_properties results or id field in search_companies results. |
| `category` | string | No | Listing category. |
| `location_id` | string | No | Location ID or comma-separated location IDs from get_location_suggestions (e.g., '50' for Dubai Marina, '50,73' for Dubai Marina and Jumeirah Village Circle). Results include properties from any of the specified locations. |
| `location_slug` | string | No | Location slug from get_location_suggestions 's' field (e.g., 'dubai-marina' for Dubai Marina, 'palm-jumeirah' for Palm Jumeirah). The slug is resolved to a location ID internally for filtering. |
| `max_area` | integer | No | Maximum area in sqft |
| `max_price` | integer | No | Maximum price in AED |
| `min_area` | integer | No | Minimum area in sqft |
| `min_price` | integer | No | Minimum price in AED |
| `page` | integer | No | Page number for pagination |
| `property_type_id` | string | No | Property type ID: '1' for Apartment, '35' for Villa, '22' for Townhouse |
| `sort` | string | No | Sort order for results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-propertyfinder-ae-api-fbbc1eca/search_properties \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"bathrooms":"<string>","bedrooms":"<string>","broker_id":"<string>","category":"<string>","location_id":"<string>","location_slug":"<string>","max_area":"<integer>","max_price":"<integer>","min_area":"<integer>","min_price":"<integer>","page":"<integer>","property_type_id":"<string>","sort":"<string>"}'
```
