Introduction
The Homer API returns property campaign data for sales and rentals. Requests and responses are JSON, and the API uses standard HTTP response codes.
Send an API key on every request and pin the contract with a Homer-Version header. These pages describe version 2026-09-28.
https://feed.homerapp.com.auAuthentication
The Customer API uses API keys to authenticate requests. Homer issues your key. Send it in the Homer-API-Key header on every request.
Your API key identifies your account. Keep it secret and do not embed it in client-side code. A missing or unknown key returns 403.
Make all API requests over HTTPS. Calls made over plain HTTP fail. API requests without authentication also fail.
curl -X POST 'https://feed.homerapp.com.au/v1/search-campaigns' \
-H 'Content-Type: application/json' \
-H 'Homer-API-Key: secret' \
-H 'Homer-Version: 2026-09-28' \
-d '{ ... }'Pagination
Some API resources have support for bulk fetches. For example, you can paginate search campaigns. These paginated API methods share a common structure and accept, at a minimum, the following parameter: page_number and, items_per_page .
Homers API uses page-based pagination through the page_number and items_per_page parameters. For example, you can search campaigns. Both parameters accept a positive integer and are sent together in a pagination object. page_number selects the page to return and defaults to 1. items_per_page sets how many records that page contains, defaults to 10, and has a maximum of 100.
Parameters
items_per_page integer
Records on the page. The field defaults to 10. Maximum is 100.
page_number integer
Page to return. The field defaults to 1.
Response Format
items_per_page integer
Records on this page.
page_number integer
Page returned.
total_items integer
Number of matching records.
total_pages integer
Number of pages for this page size.
curl -X POST 'https://feed.homerapp.com.au/v1/search-campaigns' \
-H 'Content-Type: application/json' \
-H 'Homer-API-Key: secret' \
-H 'Homer-Version: 2026-09-28' \
-d '{
"category": "active",
"filters": {
"property_types": ["house"],
"suburbs": [
{ "name": "Sydney", "postcode": "2000", "state": "NSW" }
]
},
"pagination": {
"page_number": 2,
"items_per_page": 25
},
"type": "sale"
}'{
"data": [
{
"agents": [
{
"agency": {
"name": "Example Realty",
"website_url": "https://example-realty.com"
},
"email": "alice@example-realty.com",
"id": "8f3c2a1b-6d4e-4f70-9a12-bc34de56f789",
"name": "Alice Agent",
"phone": "+61400000000"
}
],
"auction_date": null,
"created_at": "2026-01-10T02:15:00Z",
"current_guide_price": {
"kind": "range",
"min": 820000,
"max": 880000
},
"days_on_market": 14,
"end_date": null,
"first_guide_price": {
"kind": "exact",
"value": 850000
},
"id": "2c6f8a40-1b7e-4d93-8c55-0e9a7b3d1f24",
"inspection_date": "2026-01-18T01:00:00+11:00",
"last_guide_price": null,
"last_seen_active_at": "2026-01-24T04:30:00Z",
"last_seen_at": "2026-01-24T04:30:00Z",
"listing_urls": [
"https://example-realty.com/listings/2c6f8a40-1b7e-4d93-8c55-0e9a7b3d1f24"
],
"property": {
"address": "100 Example Street, Sydney NSW 2000",
"address_id": "5a9e1c72-0d84-4b16-a3f8-67c2e0d4b915",
"bathrooms": 2,
"building_age": "established",
"bedrooms": 3,
"car_spaces": 1,
"land_size": 420,
"latitude": -33.8688,
"longitude": 151.2093,
"time_zone": "Australia/Sydney",
"type": "house"
},
"sold_date": null,
"sold_price": null,
"start_date": "2026-01-10",
"status": "under_offer",
"type": "private_treaty",
"updated_at": "2026-01-24T04:30:00Z",
"withdrawn_date": null
}
],
"pagination": {
"page_number": 2,
"items_per_page": 25,
"total_items": 26,
"total_pages": 2
}
}Versioning
Homer versions the API so each request runs against one contract. The version sets which paths exist and the shape of the request and response. The current version is 2026-09-28. These pages describe that version. The server also accepts 2026-01-01.
How a version is chosen
Send Homer-Version as YYYY-MM-DD on the request.
Compatible changes and breaking changes
A pinned version keeps its contract. A newer date can include breaking changes, such as renamed fields, removed parameters, or different object shapes. Design your integration to ignore unfamiliar fields.
Homer treats these changes as backward-compatible:
- Adding new API resources.
- Adding new optional request parameters to existing methods.
- Adding new properties to existing responses.
- Changing the order of properties in existing responses.
- Changing the length or format of opaque strings, such as object IDs and error messages.
Homer-Version: 2026-09-28Legacy version
Requests to /api that omit Homer-Version use version 2026-01-01.
These endpoints stay on that version:
GET /api/v1/address-search/:addressPOST /api/v1/address-searchGET, POST /api/v1/campaign-feedGET, POST /api/v1/campaign-insightsGET, POST /api/v1/get-auctioned-listingsGET, POST /api/v1/get-auctioned-listings-streamGET, POST /api/v1/property-eventsGET, POST /api/v1/suburb-metricsGET, POST /api/v1/suburb-properties
Search campaigns and list campaign snapshots are available on /api as well. Call them without a Homer-Version header:
POST /api/v1/search-campaignsPOST /api/v1/list-campaign-snapshots