2026-09-28

Campaigns

A campaign is one marketing period for a property. It is a single attempt to sell or rent that property, from when the listing starts until that period ends.

The same property can be marketed more than once. Each time it returns to the market, that stretch of marketing is its own campaign.

The Campaign object

Attributes

id string

Unique identifier for the object.

agents object

Agents attached to the campaign.

Show child attributesHide child attributes

agents.id string

Unique identifier for the object.

agents.agency nullable object

Agency the agent belongs to.

Show child attributesHide child attributes

agency.name string

Agency name.

agency.website_url nullable string

Agency website URL.

agents.email nullable string

Agent email address.

agents.name string

Agent name.

agents.phone nullable string

Agent phone number.

auction_date nullable datetime

Scheduled auction date and time in the property's local time.

created_at nullable datetime

When the campaign record was created.

current_guide_price nullable object

Current guide price. Either `{ "kind": "exact", "value": number }` or `{ "kind": "range", "min": number, "max": number }`. Nullable.

days_on_market nullable number

Days the campaign has been on market.

end_date nullable date

Campaign end date in the property's local time (YYYY-MM-DD).

first_guide_price nullable object

First recorded guide price. Either `{ "kind": "exact", "value": number }` or `{ "kind": "range", "min": number, "max": number }`. Nullable.

inspection_date nullable datetime

Next inspection date and time in the property's local time.

last_guide_price nullable object

Most recent guide price before the current one. Either `{ "kind": "exact", "value": number }` or `{ "kind": "range", "min": number, "max": number }`. Nullable.

last_seen_active_at nullable datetime

When the campaign was last observed as active.

last_seen_at nullable datetime

When the campaign was last observed.

listing_urls string[]

Public listing URLs for the campaign.

property object

Property details for the campaign.

Show child attributesHide child attributes

property.address string

Property address.

property.address_id string

Property identifier.

property.bathrooms nullable number

Number of bathrooms.

property.bedrooms nullable number

Number of bedrooms.

property.building_age nullable enum

Whether the property is new or established.

Possible enum values

established

An existing property.

new

A newly built property.

property.car_spaces nullable number

Number of car spaces.

property.land_size nullable number

Land size in square metres.

property.latitude nullable number

Property latitude.

property.longitude nullable number

Property longitude.

property.time_zone string

IANA time zone for the property.

property.type nullable enum

Property type.

Possible enum values

apartment

Apartment or unit.

house

House.

land

Vacant land.

retirement

Retirement living property.

townhouse

Townhouse.

other

Other property type.

sold_date nullable date

Date the property sold, in the property's local time (YYYY-MM-DD).

sold_price nullable number

Sold price in dollars.

start_date nullable date

Campaign start date in the property's local time (YYYY-MM-DD).

status enum

Current campaign status.

Possible enum values

available

Available on market.

deposit_taken

A deposit has been taken.

leased

The property has been leased.

likely_withdrawn

Likely withdrawn from market.

sold

The property has sold.

under_offer

Under offer.

withdrawn

Withdrawn from market.

type nullable enum

Campaign sale or rent type.

Possible enum values

auction

Sold by auction.

private_treaty

Private treaty sale.

rent

Rental campaign.

tender

Sold by tender.

updated_at nullable datetime

When the campaign record was last updated.

withdrawn_date nullable date

Date the campaign was withdrawn, in the property's local time (YYYY-MM-DD).

The Campaign object
{
  "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
}

Search campaigns

POST /v1/search-campaigns

Parameters

category enum Required

Search category.

If type is rent, one of:

  • on_market
  • off_market

If type is sale, one of:

  • active
  • sold
  • withdrawn

Possible enum values

active

Active sale listings.

off_market

Off-market rentals.

on_market

On-market rentals.

sold

Sold listings.

withdrawn

Withdrawn sale listings.

filters object Required

Search filters.

Show child parametersHide child parameters

filters.bathrooms_max number

Maximum bathrooms.

filters.bathrooms_min number

Minimum bathrooms.

filters.bedrooms_max number

Maximum bedrooms.

filters.bedrooms_min number

Minimum bedrooms.

filters.car_spaces_max number

Maximum car spaces.

filters.car_spaces_min number

Minimum car spaces.

filters.guide_price_max number

Maximum guide price in dollars.

filters.guide_price_min number

Minimum guide price in dollars.

filters.include_deposit_taken boolean

Include properties with a deposit taken. Applies when type is rent and category is on_market. The field defaults to false.

filters.include_under_offer boolean

Include properties currently under offer. Applies when type is sale and category is active. The field defaults to false.

filters.land_size_max number

Maximum land size in square metres.

filters.land_size_min number

Minimum land size in square metres.

filters.listed_date_max string

Latest listed date. Applies when type is rent and category is on_market, or type is sale and category is active.

filters.listed_date_min string

Earliest listed date. Applies when type is rent and category is on_market, or type is sale and category is active.

filters.off_market_date_max string

Latest off-market date. Applies when type is rent and category is off_market.

filters.off_market_date_min string

Earliest off-market date. Applies when type is rent and category is off_market.

filters.property_types enum[] Required

Property types to include. At least one value.

Possible enum values

apartment

Apartment or unit.

house

House.

land

Vacant land.

retirement

Retirement living property.

townhouse

Townhouse.

other

Other property type.

filters.sold_date_max string

Latest sold date. Applies when type is sale and category is sold.

filters.sold_date_min string

Earliest sold date. Applies when type is sale and category is sold.

filters.suburbs object Required

Suburbs to search. At least one entry.

Show child parametersHide child parameters

suburbs.name string Required

Suburb name.

suburbs.postcode string Required

Suburb postcode.

suburbs.state string Required

Suburb state.

filters.withdrawn_date_max string

Latest withdrawn date. Applies when type is sale and category is withdrawn.

filters.withdrawn_date_min string

Earliest withdrawn date. Applies when type is sale and category is withdrawn.

pagination object

Pagination options.

Show child parametersHide child parameters

pagination.items_per_page integer

Items per page. The field defaults to 10. Maximum is 100.

pagination.page_number integer

Page to return. The field defaults to 1.

sort object

Sort order.

Show child parametersHide child parameters

sort.direction enum

Sort direction. sort is optional and has no default.

Possible enum values

asc

Ascending order.

desc

Descending order.

sort.field enum

Field to sort by. sort is optional and has no default.

Possible enum values

created_at

Sort by record creation time.

ended_at

Sort by campaign end time.

off_market_date

Sort by off-market date. Use when category is off_market.

sold_date

Sort by sold date. Use when category is sold.

started_at

Sort by campaign start time.

updated_at

Sort by last update time.

withdrawn_date

Sort by withdrawn date. Use when category is withdrawn.

type enum Required

Whether to search rentals or sales.

Possible enum values

rent

Search rental campaigns.

sale

Search sale campaigns.

Returns a list of Campaign objects.

Curl
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" }
      ]
    },
    "type": "sale"
  }'
Response
{
  "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": 1,
    "items_per_page": 10,
    "total_items": 1,
    "total_pages": 1
  }
}