Listings

Use the Account page to obtain a Bearer token. Address-based property records, valuations, and comps are documented on the Property page.

MLS Profiles

You can get mls profiles (including logos, disclaimers, and basic compliance elements).

Get MLS profiles

GEThttps://api.anyprop.com/v1/listings/mls_profiles

Retrieve profiles for active MLSes (including logos, disclaimers, and basic compliance elements).

Authorizations
Authorizationstringrequired

Bearer authentication header of the form Bearer <token>.

Responses
200Successful responseapplication/json
profilesobjectoptional

MLS profiles with logos, disclaimers, and compliance elements

Show properties

Additional properties allowed

401Unauthorizedapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
GET/v1/listings/mls_profiles
GET /v1/listings/mls_profiles HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Response example
{
  "profiles": {
    "agsmls": {
      "originating_system_name": "agsmls",
      "originating_system_full_name": "aspen glenwood mls",
      "disclaimer": "Copyright {{current_year}} Aspen Glenwood MLS. Information is provided exclusively for consumers' personal, non-commercial use and may not be used for any purpose other than to identify prospective properties consumers may be interested in purchasing. This information is deemed reliable but is not guaranteed accurate by the MLS.",
      "mls_logo": "https://photos.anpcdn.com/assets/listings/mls-logo/agsmls-logo.png",
      "current_year": "2025",
      "required_update_frequency": "12 hours",
      "required_update_frequency_hours": "12"
    },
    "chsmls": {
      "originating_system_name": "chsmls",
      "originating_system_full_name": "CHS Regional MLS",
      "disclaimer": "Copyright {{current_year}} CHS Regional MLS. Information is provided exclusively for consumers' personal, non-commercial use and may not be used for any purpose other than to identify prospective properties consumers may be interested in purchasing. This information is deemed reliable but is not guaranteed accurate by the MLS.",
      "mls_logo": "https://photos.anpcdn.com/assets/listings/mls-logo/chsmls-logo.png",
      "current_year": "2025",
      "required_update_frequency": "24 hours",
      "required_update_frequency_hours": "24"
    }
  }
}

API Resources

The base URL for all listings API requests is:

https://api.anyprop.com/v1/listings/data

Property Resource

Get property listings

GEThttps://api.anyprop.com/v1/listings/data/Property

Retrieve property listings with support for OData query options

Authorizations
Authorizationstringrequired

Bearer authentication header of the form Bearer <token>.

Query parameters
$filterstringoptional

OData filter expression

Example: contains(PropertyType, 'Lease') or StandardStatus eq 'Active'

$selectstringoptional

Select specific fields

Example: ListingId,BedroomsTotal

$orderbystringoptional

Order results by specified fields (append 'desc' for descending order)

Example: ModificationTimestamp desc

$expandstringoptional

Expand related entities. Property supports Media, OpenHouse, PropertyChange, PreferredMedia, PropertyRooms, and PropertyUnitTypes.

Example: Media($select=MediaKey),PropertyRooms,PropertyUnitTypes

$topintegeroptional

Limit returned listing records. Default: 10; maximum: 50,000. Set $top=0 to return only aggregation results.

Default: 10

Minimum: 0

Maximum: 50000

$skipintegeroptional

Skip number of results

Default: 0

$ignorenullsbooleanoptional

Ignore null fields and omit them from the results

Example: true

Default: false

$applystringoptional

Group records or calculate an aggregate metric. See the $apply reference for syntax, examples, and limits.

Example: groupby((OriginatingSystemName,ListingId))

Maximum length: 500

Responses
200Successful responseapplication/json
valueobject[]optional
Show item properties

Additional properties allowed

@odata.countintegeroptional

Number of results in current response

Example: 2

@odata.totalCountintegeroptional

Total matches (may be estimated).

Example: 125847

@odata.nextLinkstringoptional

URL for next page of results

Example: https://api.anyprop.com/v1/listings/data/Property/skiptoken/demo_skip_token_12345

aggregateobjectoptional

Aggregate values for matching records.

Show properties

Additional properties allowed

groupobjectoptional

Grouped results for matching records.

Show properties
groupbystringrequired

Grouping field.

Example: City

countintegerrequired

Number of groups returned.

Example: 1

bucketsobject[]required
Show item properties
keystring | number | booleanrequired

Group value; string keys use lowercase.

Show properties
Option 1
Option 2
Option 3
countintegerrequired

Number of matching records in the group.

Example: 3

metricsobjectoptional

Aggregate values for this group.

Show properties

Additional properties allowed

groupobjectoptional

Nested results for the next grouping field.

Show properties

Recursive object

400Bad requestapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
401Unauthorizedapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
GET/v1/listings/data/Property
GET /v1/listings/data/Property HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Response example
{
  "value": [
    {
      "@odata.id": "Property('demo_prop001')",
      "AboveGradeFinishedArea": 1850,
      "AboveGradeFinishedAreaSource": "Appraiser",
      "AboveGradeFinishedAreaUnits": "Square Feet",
      "AboveGradeUnfinishedArea": 200,
      "AboveGradeUnfinishedAreaSource": "Appraiser",
      "AboveGradeUnfinishedAreaUnits": "Square Feet",
      "AccessCode": "1234#",
      "AccessibilityFeatures": [
        "Wheelchair Accessible",
        "Grab Bars"
      ],
      "ActivationDate": "2024-03-15",
      "AdditionalParcelsDescription": "Adjacent vacant lot included",
      "AdditionalParcelsYN": true,
      "AnchorsCoTenants": "Starbucks, CVS Pharmacy",
      "Appliances": [
        "Dishwasher",
        "Disposal",
        "Electric Range",
        "Microwave",
        "Refrigerator",
        "Washer",
        "Dryer"
      ],
      "ArchitecturalStyle": [
        "Contemporary",
        "Modern"
      ],
      "AssociationAmenities": [
        "Pool",
        "Fitness Center",
        "Tennis Court"
      ],
      "AssociationFee": 250,
      "AssociationFee2": 75,
      "AssociationFee2Frequency": "Monthly",
      "AssociationFeeFrequency": "Monthly",
      "AssociationFeeIncludes": [
        "Water",
        "Sewer",
        "Trash",
        "Landscaping"
      ],
      "AssociationName": "Sunset Ridge HOA",
      "AssociationName2": "Master Community Association",
      "AssociationPhone": "555-123-4567",
      "AssociationPhone2": "555-765-4321",
      "AssociationYN": true,
      "AttachedGarageYN": true,
      "AttributionContact": "John Smith, Demo Realty",
      "AvailabilityDate": "2024-04-01",
      "BackOnMarketDate": "2024-03-20",
      "Basement": [
        "Full",
        "Finished"
      ],
      "BasementYN": true,
      "BathroomsFull": 3,
      "BathroomsHalf": 1,
      "BathroomsOneQuarter": 0,
      "BathroomsPartial": 0,
      "BathroomsThreeQuarter": 0,
      "BathroomsTotalInteger": 4,
      "BedroomsPossible": 5,
      "BedroomsTotal": 4,
      "BelowGradeFinishedArea": 800,
      "BelowGradeFinishedAreaSource": "Appraiser",
      "BelowGradeFinishedAreaUnits": "Square Feet",
      "BelowGradeUnfinishedArea": 300,
      "BelowGradeUnfinishedAreaSource": "Appraiser",
      "BelowGradeUnfinishedAreaUnits": "Square Feet",
      "BodyType": [
        "Detached"
      ],
      "BuilderModel": "Heritage Series",
      "BuilderName": "Premier Homes",
      "BuildingAreaSource": "Appraiser",
      "BuildingAreaTotal": 2850,
      "BuildingAreaUnits": "Square Feet",
      "BuildingFeatures": [
        "Energy Efficient",
        "Smart Home"
      ],
      "BuildingName": "Sunset Ridge Manor",
      "BusinessName": "Corner Market & Deli",
      "BusinessType": [
        "Retail",
        "Food Service"
      ],
      "CableTvExpense": 120,
      "CapRate": 7.5,
      "CarportSpaces": 0,
      "CarportYN": false,
      "CarrierRoute": "C032",
      "City": "Springfield",
      "CityRegion": "Metro West",
      "CloseDate": "2024-02-28",
      "ClosePrice": 485000,
      "CommonInterest": "Shared driveway maintenance",
      "CommonWalls": [
        "Left",
        "Right"
      ],
      "CommunityFeatures": [
        "Playground",
        "Walking Trails",
        "Community Center"
      ],
      "ConstructionMaterials": [
        "Brick",
        "Vinyl Siding",
        "Stone"
      ],
      "ContractStatusChangeDate": "2024-03-15",
      "Cooling": [
        "Central Air",
        "Heat Pump"
      ],
      "CoolingYN": true,
      "CopyrightNotice": "© 2024 Demo MLS. All rights reserved.",
      "Country": "US",
      "CountryRegion": "North America",
      "CountyOrParish": "Madison County",
      "CoveredSpaces": 2,
      "CrossStreet": "Oak Street and Maple Avenue",
      "CumulativeDaysOnMarket": 45,
      "CurrentUse": [
        "Single Family Residence"
      ],
      "DaysOnMarket": 18,
      "DirectionFaces": "South",
      "Directions": "From Main St, turn left on Oak St, house is third on the right",
      "Disclosures": [
        "Lead Paint",
        "Flood Zone"
      ],
      "DocumentsCount": 15,
      "DoorFeatures": [
        "Security System",
        "Smart Lock"
      ],
      "Electric": [
        "220V Service",
        "Circuit Breakers"
      ],
      "ElectricExpense": 180,
      "ElectricOnPropertyYN": true,
      "ElementarySchool": "Lincoln Elementary",
      "ElementarySchoolDistrict": "Springfield School District",
      "Elevation": 850,
      "ElevationUnits": "Feet",
      "EntryLevel": "Main",
      "EntryLocation": "Front",
      "Exclusions": "All window treatments and fixtures in master bedroom",
      "ExteriorFeatures": [
        "Deck",
        "Patio",
        "Landscaped",
        "Sprinkler System"
      ],
      "Fencing": [
        "Privacy",
        "Chain Link"
      ],
      "FireplaceFeatures": [
        "Gas",
        "Wood Burning"
      ],
      "FireplacesTotal": 2,
      "FireplaceYN": true,
      "Flooring": [
        "Hardwood",
        "Tile",
        "Carpet"
      ],
      "FoundationDetails": [
        "Concrete Slab",
        "Crawl Space"
      ],
      "FrontageLength": 120,
      "FrontageType": [
        "Street"
      ],
      "FuelExpense": 95,
      "Furnished": "Unfurnished",
      "GarageSpaces": 2,
      "GarageYN": true,
      "GreenBuildingVerificationType": [
        "ENERGY STAR"
      ],
      "GreenEnergyEfficient": [
        "High Performance Windows",
        "Insulation"
      ],
      "GreenVerificationYN": true,
      "GrossIncome": 84000,
      "Heating": [
        "Forced Air",
        "Natural Gas"
      ],
      "HeatingYN": true,
      "HighSchool": "Springfield High School",
      "HighSchoolDistrict": "Springfield School District",
      "HomeWarrantyYN": true,
      "HorseAmenities": [
        "Barn",
        "Pasture"
      ],
      "HorseYN": false,
      "Inclusions": "All appliances, window treatments, and light fixtures",
      "InsuranceExpense": 1200,
      "InteriorFeatures": [
        "Vaulted Ceilings",
        "Walk-in Closets",
        "Hardwood Floors",
        "Island Kitchen",
        "Master Suite",
        "Great Room"
      ],
      "InternetAddressDisplayYN": true,
      "InternetAutomatedValuationDisplayYN": true,
      "InternetConsumerCommentYN": true,
      "InternetEntireListingDisplayYN": true,
      "IrrigationSource": [
        "Well",
        "City Water"
      ],
      "IrrigationWaterRightsYN": false,
      "LandLeaseAmount": 0,
      "LandLeaseYN": false,
      "Latitude": 39.7817,
      "LaundryFeatures": [
        "Upper Level",
        "Washer/Dryer Hookup"
      ],
      "LeaseAmount": 2800,
      "LeaseAmountFrequency": "Monthly",
      "LeaseTerm": "12 Months",
      "Levels": [
        "Two"
      ],
      "ListAgent": "sample_agent_001",
      "ListAgentAOR": "Demo Board of Realtors",
      "ListAgentDirectPhone": "555-987-6543",
      "ListAgentEmail": "[email protected]",
      "ListAgentFirstName": "Jane",
      "ListAgentFullName": "Jane Smith",
      "ListAgentKey": "demo_agent_jane001",
      "ListAgentLastName": "Smith",
      "ListAgentMlsId": "AG123456",
      "ListAgentMobilePhone": "555-444-3333",
      "ListAgentNationalAssociationId": "AG123456",
      "ListAgentPreferredPhone": "555-987-6543",
      "ListAgentStateLicense": "RE987654321",
      "ListAOR": "Demo Board of Realtors",
      "ListingAgreement": "Exclusive Right to Sell",
      "ListingContractDate": "2024-03-01",
      "ListingId": "DEMO001",
      "ListingKey": "demo_prop001",
      "ListingTerms": [
        "Cash",
        "Conventional",
        "FHA",
        "VA"
      ],
      "ListOffice": "sample_office_001",
      "ListOfficeAOR": "Demo Board of Realtors",
      "ListOfficeEmail": "[email protected]",
      "ListOfficeFax": "555-123-4568",
      "ListOfficeKey": "demo_office_001",
      "ListOfficeMlsId": "OF567890",
      "ListOfficeName": "Demo Realty Group",
      "ListOfficeNationalAssociationId": "OF567890",
      "ListOfficePhone": "555-123-4567",
      "ListPrice": 495000,
      "LivingArea": 2850,
      "LivingAreaSource": "Appraiser",
      "LivingAreaUnits": "Square Feet",
      "LockBoxType": [
        "Electronic"
      ],
      "Longitude": -89.6501,
      "LotFeatures": [
        "Corner Lot",
        "Mature Trees",
        "Level"
      ],
      "LotSizeAcres": 0.28,
      "LotSizeArea": 12197,
      "LotSizeDimensions": "95 x 128",
      "LotSizeSquareFeet": 12197,
      "LotSizeUnits": "Square Feet",
      "MaintenanceExpense": 450,
      "MajorChangeType": "Price Change",
      "MLSAreaMajor": "West Springfield",
      "MLSAreaMinor": "Sunset Ridge",
      "MlsStatus": "Active",
      "ModificationTimestamp": "2024-03-15T14:30:00.000000Z",
      "NetOperatingIncome": 72000,
      "NewConstructionYN": false,
      "NumberOfUnitsTotal": 1,
      "OccupantName": "Smith Family",
      "OccupantType": "Owner",
      "OnMarketDate": "2024-03-15",
      "OnMarketTimestamp": "2024-03-15T08:00:00.000000Z",
      "OpenParkingSpaces": 4,
      "OpenParkingYN": true,
      "OriginalEntryTimestamp": "2024-03-01T10:00:00.000000Z",
      "OriginalListPrice": 510000,
      "OriginatingSystemKey": "demo_system",
      "OriginatingSystemName": "Demo MLS System",
      "OwnerName": "Johnson Trust",
      "OwnerPays": [
        "HOA Dues",
        "Property Tax"
      ],
      "ParcelNumber": "123-45-678-900",
      "ParkingFeatures": [
        "Attached Garage",
        "Driveway"
      ],
      "ParkingTotal": 6,
      "PatioAndPorchFeatures": [
        "Covered Patio",
        "Deck"
      ],
      "PetsAllowed": [
        "Cats OK",
        "Dogs OK",
        "Size Limit"
      ],
      "PhotosCount": 28,
      "PoolFeatures": [
        "In Ground",
        "Heated"
      ],
      "PoolPrivateYN": true,
      "Possession": [
        "At Closing"
      ],
      "PossibleUse": [
        "Single Family"
      ],
      "PostalCode": "12345",
      "PostalCodePlus4": "6789",
      "PriceChangeTimestamp": "2024-03-10T16:45:00.000000Z",
      "PrivateRemarks": "Seller motivated. Property shows well. Easy to show.",
      "PropertyCondition": [
        "Excellent"
      ],
      "PropertySubType": "Single Family Residence",
      "PropertyType": "Residential",
      "PublicRemarks": "Stunning 4-bedroom, 4-bathroom home in desirable Sunset Ridge neighborhood. This beautiful two-story home features an open floor plan, gourmet kitchen with island, hardwood floors throughout main level, and a spacious master suite. The finished basement provides additional living space perfect for entertainment. Outside, enjoy the private backyard with in-ground pool and covered patio. Located in award-winning school district with easy access to shopping and dining.",
      "RentIncludes": [
        "Water",
        "Sewer"
      ],
      "RoadSurfaceType": [
        "Asphalt"
      ],
      "Roof": [
        "Composition Shingles"
      ],
      "RoomsTotal": 12,
      "SecurityFeatures": [
        "Security System",
        "Motion Sensors"
      ],
      "SeniorCommunityYN": false,
      "Sewer": [
        "Public Sewer"
      ],
      "StandardStatus": "Active",
      "StateOrProvince": "IL",
      "StatusChangeTimestamp": "2024-03-15T08:00:00.000000Z",
      "Stories": 2,
      "StoriesTotal": 2,
      "StreetAdditionalInfo": "Corner of Oak and Maple",
      "StreetDirPrefix": "N",
      "StreetName": "OAK",
      "StreetNumber": "1234",
      "StreetNumberNumeric": 1234,
      "StreetSuffix": "STREET",
      "StructureType": [
        "Stick Built"
      ],
      "SubdivisionName": "SUNSET RIDGE ESTATES",
      "TaxAnnualAmount": 8500,
      "TaxAssessedValue": 420000,
      "TaxYear": 2023,
      "TenantPays": [
        "Electric",
        "Gas",
        "Cable"
      ],
      "UnparsedAddress": "1234 N OAK STREET",
      "Utilities": [
        "Electricity Connected",
        "Gas Connected",
        "Water Connected",
        "Sewer Connected"
      ],
      "View": [
        "City",
        "Mountains"
      ],
      "ViewYN": true,
      "WaterfrontFeatures": [
        "Lake"
      ],
      "WaterfrontYN": false,
      "WaterSource": [
        "Public"
      ],
      "WindowFeatures": [
        "Double Pane",
        "Screens"
      ],
      "YearBuilt": 1998,
      "YearBuiltSource": "Public Records",
      "Zoning": "R-1",
      "ZoningDescription": "Single Family Residential"
    },
    {
      "@odata.id": "Property('demo_prop002')",
      "AboveGradeFinishedArea": 1200,
      "AboveGradeFinishedAreaSource": "Builder",
      "AboveGradeFinishedAreaUnits": "Square Feet",
      "AboveGradeUnfinishedArea": 0,
      "AccessCode": "9876*",
      "AccessibilityFeatures": [],
      "ActivationDate": "2024-03-20",
      "AdditionalParcelsYN": false,
      "Appliances": [
        "Range",
        "Refrigerator",
        "Dishwasher",
        "Microwave"
      ],
      "ArchitecturalStyle": [
        "Ranch"
      ],
      "AssociationAmenities": [],
      "AssociationFee": 0,
      "AssociationYN": false,
      "AttachedGarageYN": false,
      "AvailabilityDate": "2024-04-15",
      "Basement": [],
      "BasementYN": false,
      "BathroomsFull": 2,
      "BathroomsHalf": 0,
      "BathroomsOneQuarter": 0,
      "BathroomsPartial": 0,
      "BathroomsThreeQuarter": 0,
      "BathroomsTotalInteger": 2,
      "BedroomsPossible": 3,
      "BedroomsTotal": 3,
      "BelowGradeFinishedArea": 0,
      "BelowGradeUnfinishedArea": 0,
      "BodyType": [
        "Detached"
      ],
      "BuilderModel": "Classic Ranch",
      "BuilderName": "Heritage Builders",
      "BuildingAreaSource": "Builder",
      "BuildingAreaTotal": 1200,
      "BuildingAreaUnits": "Square Feet",
      "BuildingFeatures": [
        "Traditional"
      ],
      "CableTvExpense": 85,
      "CarportSpaces": 1,
      "CarportYN": true,
      "CarrierRoute": "C045",
      "City": "Riverside",
      "ClosePrice": 285000,
      "CommonWalls": [],
      "CommunityFeatures": [
        "Park"
      ],
      "ConstructionMaterials": [
        "Vinyl Siding",
        "Asphalt Shingles"
      ],
      "ContractStatusChangeDate": "2024-03-20",
      "Cooling": [
        "Window Units"
      ],
      "CoolingYN": true,
      "CopyrightNotice": "© 2024 Demo MLS. All rights reserved.",
      "Country": "US",
      "CountyOrParish": "River County",
      "CoveredSpaces": 1,
      "CrossStreet": "Pine Street and River Road",
      "CumulativeDaysOnMarket": 12,
      "CurrentUse": [
        "Single Family Residence"
      ],
      "DaysOnMarket": 5,
      "DirectionFaces": "East",
      "Directions": "From Highway 67, turn right on River Road, left on Pine Street",
      "DocumentsCount": 8,
      "Electric": [
        "200 Amp Service"
      ],
      "ElectricExpense": 125,
      "ElectricOnPropertyYN": true,
      "ElementarySchool": "Riverside Elementary",
      "ElementarySchoolDistrict": "Riverside School District",
      "Elevation": 650,
      "ElevationUnits": "Feet",
      "EntryLevel": "Main",
      "EntryLocation": "Front",
      "Exclusions": "Outdoor storage shed",
      "ExteriorFeatures": [
        "Fenced Yard"
      ],
      "Fencing": [
        "Chain Link"
      ],
      "FireplacesTotal": 0,
      "FireplaceYN": false,
      "Flooring": [
        "Carpet",
        "Vinyl"
      ],
      "FoundationDetails": [
        "Concrete Slab"
      ],
      "FrontageLength": 75,
      "FrontageType": [
        "Street"
      ],
      "FuelExpense": 0,
      "Furnished": "Unfurnished",
      "GarageSpaces": 0,
      "GarageYN": false,
      "GreenVerificationYN": false,
      "Heating": [
        "Electric Baseboard"
      ],
      "HeatingYN": true,
      "HighSchool": "Riverside High School",
      "HighSchoolDistrict": "Riverside School District",
      "HomeWarrantyYN": false,
      "HorseYN": false,
      "Inclusions": "All appliances and window coverings",
      "InsuranceExpense": 800,
      "InteriorFeatures": [
        "Open Floor Plan",
        "Large Windows"
      ],
      "InternetAddressDisplayYN": true,
      "InternetAutomatedValuationDisplayYN": true,
      "InternetConsumerCommentYN": true,
      "InternetEntireListingDisplayYN": true,
      "IrrigationWaterRightsYN": false,
      "LandLeaseYN": false,
      "Latitude": 41.2524,
      "LaundryFeatures": [
        "Main Level"
      ],
      "LeaseAmount": 1450,
      "LeaseAmountFrequency": "Monthly",
      "LeaseTerm": "12 Months",
      "Levels": [
        "One"
      ],
      "ListAgent": "sample_agent_002",
      "ListAgentAOR": "River County Board of Realtors",
      "ListAgentDirectPhone": "555-246-8101",
      "ListAgentEmail": "[email protected]",
      "ListAgentFirstName": "Mike",
      "ListAgentFullName": "Mike Johnson",
      "ListAgentKey": "demo_agent_mike002",
      "ListAgentLastName": "Johnson",
      "ListAgentMlsId": "AG789012",
      "ListAgentMobilePhone": "555-777-8888",
      "ListAgentNationalAssociationId": "AG789012",
      "ListAgentPreferredPhone": "555-246-8101",
      "ListAgentStateLicense": "RE456789012",
      "ListAOR": "River County Board of Realtors",
      "ListingContractDate": "2024-03-18",
      "ListingId": "DEMO002",
      "ListingKey": "demo_prop002",
      "ListingTerms": [
        "Cash",
        "Conventional"
      ],
      "ListOffice": "sample_office_002",
      "ListOfficeAOR": "River County Board of Realtors",
      "ListOfficeEmail": "[email protected]",
      "ListOfficeFax": "555-246-8102",
      "ListOfficeKey": "demo_office_002",
      "ListOfficeMlsId": "OF123456",
      "ListOfficeName": "Riverside Realty",
      "ListOfficeNationalAssociationId": "OF123456",
      "ListOfficePhone": "555-246-8100",
      "ListPrice": 289000,
      "LivingArea": 1200,
      "LivingAreaSource": "Builder",
      "LivingAreaUnits": "Square Feet",
      "LockBoxType": [
        "Combination"
      ],
      "Longitude": -87.6298,
      "LotFeatures": [
        "Level",
        "Rectangular"
      ],
      "LotSizeAcres": 0.18,
      "LotSizeArea": 7840,
      "LotSizeDimensions": "80 x 98",
      "LotSizeSquareFeet": 7840,
      "LotSizeUnits": "Square Feet",
      "MaintenanceExpense": 200,
      "MLSAreaMajor": "East Riverside",
      "MlsStatus": "Active",
      "ModificationTimestamp": "2024-03-20T11:15:00.000000Z",
      "NewConstructionYN": false,
      "NumberOfUnitsTotal": 1,
      "OccupantType": "Vacant",
      "OnMarketDate": "2024-03-20",
      "OnMarketTimestamp": "2024-03-20T09:00:00.000000Z",
      "OpenParkingSpaces": 2,
      "OpenParkingYN": true,
      "OriginalEntryTimestamp": "2024-03-18T14:30:00.000000Z",
      "OriginalListPrice": 289000,
      "OriginatingSystemKey": "demo_system",
      "OriginatingSystemName": "Demo MLS System",
      "OwnerPays": [
        "Property Tax"
      ],
      "ParcelNumber": "456-78-901-234",
      "ParkingFeatures": [
        "Carport",
        "Driveway"
      ],
      "ParkingTotal": 3,
      "PetsAllowed": [
        "No Pets"
      ],
      "PhotosCount": 15,
      "PoolPrivateYN": false,
      "Possession": [
        "At Closing"
      ],
      "PossibleUse": [
        "Single Family"
      ],
      "PostalCode": "54321",
      "PostalCodePlus4": "0987",
      "PrivateRemarks": "Priced to sell. Good starter home or investment property.",
      "PropertyCondition": [
        "Good"
      ],
      "PropertySubType": "Single Family Residence",
      "PropertyType": "Residential",
      "PublicRemarks": "Charming 3-bedroom, 2-bathroom ranch home in quiet Riverside neighborhood. This well-maintained home features an open floor plan, updated kitchen with all appliances included, and a large fenced backyard perfect for pets or entertaining. Convenient location near schools, shopping, and public transportation. Move-in ready!",
      "RentIncludes": [],
      "RoadSurfaceType": [
        "Asphalt"
      ],
      "Roof": [
        "Asphalt Shingles"
      ],
      "RoomsTotal": 7,
      "SeniorCommunityYN": false,
      "Sewer": [
        "Public Sewer"
      ],
      "StandardStatus": "Active",
      "StateOrProvince": "IL",
      "StatusChangeTimestamp": "2024-03-20T09:00:00.000000Z",
      "Stories": 1,
      "StoriesTotal": 1,
      "StreetName": "PINE",
      "StreetNumber": "567",
      "StreetNumberNumeric": 567,
      "StreetSuffix": "STREET",
      "StructureType": [
        "Stick Built"
      ],
      "SubdivisionName": "RIVERSIDE HEIGHTS",
      "TaxAnnualAmount": 4200,
      "TaxAssessedValue": 235000,
      "TaxYear": 2023,
      "TenantPays": [
        "Electric",
        "Gas"
      ],
      "UnparsedAddress": "567 PINE STREET",
      "Utilities": [
        "Electricity Connected",
        "Water Connected",
        "Sewer Connected"
      ],
      "ViewYN": false,
      "WaterfrontYN": false,
      "WaterSource": [
        "Public"
      ],
      "WindowFeatures": [
        "Screens"
      ],
      "YearBuilt": 1985,
      "YearBuiltSource": "Public Records",
      "Zoning": "R-2",
      "ZoningDescription": "Single Family Residential"
    }
  ],
  "@odata.count": 2,
  "@odata.totalCount": 125847,
  "@odata.nextLink": "https://api.anyprop.com/v1/listings/data/Property/skiptoken/demo_skip_token_12345"
}

Available $filter fields

AssociationYN, BathroomsFull, BathroomsHalf, BathroomsPartial, BathroomsTotalInteger, BedroomsTotal, BuyerAgentEmail, BuyerAgentFullName, BuyerAgentSearchText, BuyerOfficeName, BuyerOfficeSearchText, CarportSpaces, CarportYN, City, CloseDate, CoBuyerAgentEmail, CoBuyerAgentFullName, CoBuyerOfficeName, CoListAgentEmail, CoListAgentFullName, CoListAgentMlsId, CoListOfficeMlsId, CoListOfficeName, CountyOrParish, DaysOnMarket, GarageSpaces, GarageYN, KeywordSearchText, Latitude, Levels, ListAgentEmail, ListAgentFullName, ListAgentMlsId, ListAgentSearchText, ListingContractDate, ListingId, ListingKey, ListOfficeMlsId, ListOfficeName, ListOfficeSearchText, ListPrice, LivingArea, Location, Longitude, LotSizeArea, LotSizeSquareFeet, MlsStatus, ModificationTimestamp, NewConstructionYN, OnMarketDate, OnMarketTimestamp, OriginalEntryTimestamp, OriginalListPrice, OriginatingSystemName, PhotosChangeTimestamp, PhotosCount, PoolPrivateYN, PostalCode, PostalCodePlus4, PropertySubType, PropertyType, RawAddressSearchText, RawLocation, SeniorCommunityYN, SpecialListingConditions, StandardStatus, StateOrProvince, StatusChangeTimestamp, Stories, StoriesTotal, StreetDirPrefix, StreetDirSuffix, StreetName, StreetNumber, StreetSuffix, UnitNumber, UnparsedAddress, WaterfrontYN, YearBuilt, YearBuiltEffective, anyprop_ActiveOpenHouseCount, anyprop_Address, anyprop_AddressAlias, anyprop_BuyerAgentEmail, anyprop_BuyerAgentPhone, anyprop_CreatedTimestamp, anyprop_DaysOnMarketReferenceTimestamp, anyprop_Latitude, anyprop_ListAgentEmail, anyprop_ListAgentPhone, anyprop_Longitude, anyprop_OpenHouseCount, anyprop_OriginalEntryTimestamp, anyprop_UnitNumber, anyprop_UpdatedTimestamp, anyprop_WaterViewYN

$expand options

  • Media - Property media (join from the Media resource)
  • OpenHouse - Property open houses (join from the OpenHouse resource)
  • PropertyChange - (Non-RESO) Historical change tracking for property fields with old/new values and modification timestamps
  • PropertyRooms - Property room details (join from the PropertyRooms resource)
  • PropertyUnitTypes - Property unit type details (join from the PropertyUnitTypes resource)
  • PreferredMedia - (Non-RESO) Optimized expand that returns the first 2 photos by media order, with priority given to the preferred photo (much faster than expanding Media)

Additional Filtering Options

Geospatial Filtering

Supported via geo.distance on RawLocation or Location. Only le comparison is accepted (distance in meters):

$filter=geo.distance(RawLocation, geography'POINT(-82.98163737 35.11490043)') le 1000

Polygon filtering is supported via geo.intersects on RawLocation or Location:

$filter=geo.intersects(RawLocation, geography'POLYGON((-80.30 25.70, -80.13 25.70, -80.13 25.85, -80.30 25.85, -80.30 25.70))')

The API supports fuzzy text matching using the search.text function. This feature allows you to search for properties using partial or incomplete text across multiple fields.

Syntax:

$filter=search.text(field, 'search terms', min_matches)

Parameters:

  • field - The search field to query (e.g., RawAddressSearchText, KeywordSearchText)
  • search terms - The text to search for (as a string)
  • min_matches (optional) - Required number of matching terms. For example, 2 means at least 2 of the tokenized search terms must match. To require all terms to match, use a large number like 1000 (values exceeding the token count are automatically capped).

Default behavior when min_matches is omitted:

  • RawAddressSearchText: Matches if at least 40% of terms match
  • All other fields: Strict matching (all terms must match)

Search for properties using partial or incomplete addresses with the RawAddressSearchText field.

Note: This performs fuzzy text matching only; it is not a geocoding service.

Example:

# Search for addresses containing "100 Gold" (defaults to 40% match)
$filter=search.text(RawAddressSearchText,'100 Gold')

# Search for properties on Main Street (require all terms)
$filter=search.text(RawAddressSearchText,'Main Street',1000)

Search for properties by agent, co-agent, office, or co-office names using search.text on the following fields:

  • ListAgentSearchText - Listing agent names
  • BuyerAgentSearchText - Buyer agent names
  • ListOfficeSearchText - Listing office names
  • BuyerOfficeSearchText - Buyer office names

Example:

# Search for properties with listing agent "John Smith" (strict match)
$filter=search.text(ListAgentSearchText,'John Smith')

# Search for properties with buyer agent "Jane Doe"
$filter=search.text(BuyerAgentSearchText,'Jane Doe')

# Search for properties with listing office "Acme Realty"
$filter=search.text(ListOfficeSearchText,'Acme Realty')

Search across listing remarks and descriptions using the KeywordSearchText field.

Fields included in search: ListingId, Appliances, ArchitecturalStyle, Heating, Cooling, InteriorFeatures, ParkingFeatures, PropertySubType, WaterfrontFeatures, View, PublicRemarks

Example:

# Search for properties mentioning "pool" and "renovated" (strict match)
$filter=search.text(KeywordSearchText,'pool renovated')

# Search for properties with at least one of these terms
$filter=search.text(KeywordSearchText,'waterfront dock boat',1)

Sorting by Relevance

To sort results by the best match, use:

$orderby=relevance desc

Complete Example:

# Search for "100 Gold" and sort by best match
$filter=search.text(RawAddressSearchText,'100 Gold')&$orderby=relevance desc

Internal Non-RESO Fields

Additional fields beyond the RESO standard. Availability depends on your MLS feeds and account permissions. See the available $filter fields above for filter support.

Geocoded Address
  • anyprop_Address - Standardized address for identifying properties across listings.
  • anyprop_AddressAlias - URL-friendly address identifier.
  • anyprop_City - City from the geocoded address
  • anyprop_HouseNumber - House number from the geocoded address
  • anyprop_RawAddress - Full address from MLS data.
  • anyprop_State - State from the geocoded address
  • anyprop_StreetAddress - Street address (house number + street name) from the geocoded address
  • anyprop_StreetName - Street name from the geocoded address
  • anyprop_UnitNumber (String) - Standardized unit identifier.
  • anyprop_ZipCode - Zip code from the geocoded address
Geolocation
  • anyprop_AddressFoundYN - Whether the address was successfully geocoded
  • anyprop_ExactGeocodeYN - Whether the geocode is an exact match (address accuracy greater than or equal to line interpolation)
  • anyprop_Latitude (Number) - Latitude in decimal degrees.
  • anyprop_Longitude (Number) - Longitude in decimal degrees.
Open Houses
  • anyprop_ActiveOpenHouseCount (Integer) - Number of active, upcoming open houses.
  • anyprop_OpenHouseCount (Integer) - Number of open-house records, including past and inactive events.
Property Features
  • anyprop_WaterViewYN (Boolean) - Whether the property has a water view.
Timestamps
  • anyprop_CreatedTimestamp (Date/time) - When the listing was added to AnyProp (ISO 8601).
  • anyprop_DaysOnMarketReferenceTimestamp - Reference date used to calculate DaysOnMarket. Example: 2026-02-17T22:15:04.300000Z
  • anyprop_OriginalEntryTimestamp - Original entry timestamp. Example: 2025-08-19T16:19:13.000000Z
Financial
  • anyprop_AssociationFeeTotalMonthly - Derived monthly association fee total. Example: 250
  • anyprop_BuyerAgentEmail - Searches both buyer agent and co-buyer agent email addresses. Use standard comparison operators (eq, contains, etc.) — not a text search field.
  • anyprop_BuyerAgentPhone - Searches both buyer agents (main + co) across all phone number fields: BuyerAgentDirectPhone, BuyerAgentHomePhone, BuyerAgentMobilePhone, BuyerAgentOfficePhone, BuyerAgentPreferredPhone, BuyerAgentTollFreePhone, CoBuyerAgentDirectPhone, CoBuyerAgentHomePhone, CoBuyerAgentMobilePhone, CoBuyerAgentOfficePhone, CoBuyerAgentPreferredPhone, CoBuyerAgentTollFreePhone
  • anyprop_ListAgentEmail - Searches both list agent and co-list agent email addresses. Use standard comparison operators (eq, contains, etc.) — not a text search field.
  • anyprop_ListAgentPhone - Searches both list agents (main + co) across all phone number fields: ListAgentDirectPhone, ListAgentHomePhone, ListAgentMobilePhone, ListAgentOfficePhone, ListAgentPreferredPhone, ListAgentTollFreePhone, CoListAgentDirectPhone, CoListAgentHomePhone, CoListAgentMobilePhone, CoListAgentOfficePhone, CoListAgentPreferredPhone, CoListAgentTollFreePhone

Note: Phone number fields can be queried in either the raw form from the MLS or a "normalized" form (all numeric).

Filter examples

$filter=anyprop_ActiveOpenHouseCount gt 0
$filter=WaterfrontYN eq true or anyprop_WaterViewYN eq true
$filter=anyprop_CreatedTimestamp ge 2026-09-01T00:00:00Z
$filter=ListAgentMlsId eq '12345' and OriginatingSystemName eq 'your_mls'

Media Resource

Get media resources

GEThttps://api.anyprop.com/v1/listings/data/Media

Retrieve media resources with support for OData query options

Authorizations
Authorizationstringrequired

Bearer authentication header of the form Bearer <token>.

Query parameters
$filterstringoptional

OData filter expression

Example: Order eq 1

$selectstringoptional

Select specific fields

Example: MediaKey,Order

$orderbystringoptional

Order results by specified fields (append 'desc' for descending order)

Example: ModificationTimestamp desc

$topintegeroptional

Limit returned listing records. Default: 10; maximum: 50,000. Set $top=0 to return only aggregation results.

Default: 10

Minimum: 0

Maximum: 50000

$skipintegeroptional

Skip number of results

Default: 0

$ignorenullsbooleanoptional

Ignore null fields and omit them from the results

Example: true

Default: false

$applystringoptional

Group records or calculate an aggregate metric. See the $apply reference for syntax, examples, and limits.

Example: groupby((OriginatingSystemName,ListingId))

Maximum length: 500

Responses
200Successful responseapplication/json
valueobject[]optional
Show item properties

Additional properties allowed

@odata.countintegeroptional

Number of results in current response

Example: 2

@odata.totalCountintegeroptional

Total matches (may be estimated).

Example: 1847

@odata.nextLinkstringoptional

URL for next page of results

Example: https://api.anyprop.com/v1/listings/data/Media/skiptoken/demo_media_skip_456

aggregateobjectoptional

Aggregate values for matching records.

Show properties

Additional properties allowed

groupobjectoptional

Grouped results for matching records.

Show properties
groupbystringrequired

Grouping field.

Example: City

countintegerrequired

Number of groups returned.

Example: 1

bucketsobject[]required
Show item properties
keystring | number | booleanrequired

Group value; string keys use lowercase.

Show properties
Option 1
Option 2
Option 3
countintegerrequired

Number of matching records in the group.

Example: 3

metricsobjectoptional

Aggregate values for this group.

Show properties

Additional properties allowed

groupobjectoptional

Nested results for the next grouping field.

Show properties

Recursive object

400Bad requestapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
401Unauthorizedapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
GET/v1/listings/data/Media
GET /v1/listings/data/Media HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Response example
{
  "value": [
    {
      "@odata.id": "Media('demo_media001')",
      "ChangedByMember": "demo_agent_jane001",
      "ChangedByMemberID": "AG123456",
      "ChangedByMemberKey": "demo_agent_jane001",
      "ClassName": "Photo",
      "ImageHeight": 768,
      "ImageOf": "Exterior Front",
      "ImageSizeDescription": "High Resolution",
      "ImageWidth": 1024,
      "LongDescription": "Beautiful exterior front view showing landscaping and architectural details",
      "MediaAlteration": "Color Enhanced",
      "MediaCategory": "Photo",
      "MediaHTML": "<img src='https://photos.demo.com/prop001/exterior-front.jpg' alt='Exterior Front View' />",
      "MediaKey": "demo_media001",
      "MediaModificationTimestamp": "2024-03-15T10:30:00.000000Z",
      "MediaObjectID": "IMG_001_EXT_FRONT",
      "MediaStatus": "Active",
      "MediaType": "JPEG",
      "MediaURL": "https://photos.demo.com/prop001/exterior-front.jpg",
      "ModificationTimestamp": "2024-03-15T10:30:00.000000Z",
      "Order": 1,
      "OriginatingSystem": "Demo Photo System",
      "OriginatingSystemID": "DPS001",
      "OriginatingSystemMediaKey": "ext_front_001",
      "OriginatingSystemName": "demo_photo_system",
      "OriginatingSystemResourceRecordID": "DEMO001",
      "OriginatingSystemResourceRecordKey": "demo_prop001",
      "OriginatingSystemResourceRecordSystemID": "DPS_PROP_001",
      "Permission": "Public",
      "PreferredPhotoYN": true,
      "ResourceName": "Property",
      "ResourceRecordID": "DEMO001",
      "ResourceRecordKey": "demo_prop001",
      "ShortDescription": "Exterior Front",
      "SourceSystem": "Demo MLS System",
      "SourceSystemID": "DMS001",
      "SourceSystemMediaKey": "media_001_front",
      "SourceSystemName": "demo_mls_system",
      "SourceSystemResourceRecordID": "DEMO001",
      "SourceSystemResourceRecordKey": "demo_prop001",
      "SourceSystemResourceRecordSystemID": "DMS_PROP_001"
    },
    {
      "@odata.id": "Media('demo_media002')",
      "ChangedByMember": "demo_agent_jane001",
      "ChangedByMemberID": "AG123456",
      "ChangedByMemberKey": "demo_agent_jane001",
      "ClassName": "Photo",
      "ImageHeight": 768,
      "ImageOf": "Kitchen",
      "ImageSizeDescription": "High Resolution",
      "ImageWidth": 1024,
      "LongDescription": "Gourmet kitchen with granite countertops, stainless steel appliances, and island seating",
      "MediaAlteration": "Brightness Adjusted",
      "MediaCategory": "Photo",
      "MediaHTML": "<img src='https://photos.demo.com/prop001/kitchen.jpg' alt='Kitchen View' />",
      "MediaKey": "demo_media002",
      "MediaModificationTimestamp": "2024-03-15T10:45:00.000000Z",
      "MediaObjectID": "IMG_002_KITCHEN",
      "MediaStatus": "Active",
      "MediaType": "JPEG",
      "MediaURL": "https://photos.demo.com/prop001/kitchen.jpg",
      "ModificationTimestamp": "2024-03-15T10:45:00.000000Z",
      "Order": 3,
      "OriginatingSystem": "Demo Photo System",
      "OriginatingSystemID": "DPS002",
      "OriginatingSystemMediaKey": "kitchen_001",
      "OriginatingSystemName": "demo_photo_system",
      "OriginatingSystemResourceRecordID": "DEMO001",
      "OriginatingSystemResourceRecordKey": "demo_prop001",
      "OriginatingSystemResourceRecordSystemID": "DPS_PROP_001",
      "Permission": "Public",
      "PreferredPhotoYN": false,
      "ResourceName": "Property",
      "ResourceRecordID": "DEMO001",
      "ResourceRecordKey": "demo_prop001",
      "ShortDescription": "Kitchen",
      "SourceSystem": "Demo MLS System",
      "SourceSystemID": "DMS002",
      "SourceSystemMediaKey": "media_002_kitchen",
      "SourceSystemName": "demo_mls_system",
      "SourceSystemResourceRecordID": "DEMO001",
      "SourceSystemResourceRecordKey": "demo_prop001",
      "SourceSystemResourceRecordSystemID": "DMS_PROP_001"
    }
  ],
  "@odata.count": 2,
  "@odata.totalCount": 1847,
  "@odata.nextLink": "https://api.anyprop.com/v1/listings/data/Media/skiptoken/demo_media_skip_456"
}

Available $filter fields

MediaCategory, MediaKey, MediaStatus, ModificationTimestamp, Order, OriginatingSystemName, ResourceName, ResourceRecordID, ResourceRecordKey

Member Resource

Get member info

GEThttps://api.anyprop.com/v1/listings/data/Member

Retrieve member data with support for OData query options

Authorizations
Authorizationstringrequired

Bearer authentication header of the form Bearer <token>.

Query parameters
$filterstringoptional

OData filter expression

Example: contains(OriginatingSystemName, 'sample')

$selectstringoptional

Select specific fields

Example: MemberMlsId

$orderbystringoptional

Order results by specified fields (append 'desc' for descending order)

Example: ModificationTimestamp desc

$topintegeroptional

Limit returned listing records. Default: 10; maximum: 50,000. Set $top=0 to return only aggregation results.

Default: 10

Minimum: 0

Maximum: 50000

$skipintegeroptional

Skip number of results

Default: 0

$ignorenullsbooleanoptional

Ignore null fields and omit them from the results

Example: true

Default: false

$applystringoptional

Group records or calculate an aggregate metric. See the $apply reference for syntax, examples, and limits.

Example: groupby((OriginatingSystemName,ListingId))

Maximum length: 500

Responses
200Successful responseapplication/json
valueobject[]optional
Show item properties

Additional properties allowed

@odata.countintegeroptional

Number of results in current response

Example: 2

@odata.totalCountintegeroptional

Total matches (may be estimated).

Example: 3456

@odata.nextLinkstringoptional

URL for next page of results

Example: https://api.anyprop.com/v1/listings/data/Member/skiptoken/demo_member_skip_789

aggregateobjectoptional

Aggregate values for matching records.

Show properties

Additional properties allowed

groupobjectoptional

Grouped results for matching records.

Show properties
groupbystringrequired

Grouping field.

Example: City

countintegerrequired

Number of groups returned.

Example: 1

bucketsobject[]required
Show item properties
keystring | number | booleanrequired

Group value; string keys use lowercase.

Show properties
Option 1
Option 2
Option 3
countintegerrequired

Number of matching records in the group.

Example: 3

metricsobjectoptional

Aggregate values for this group.

Show properties

Additional properties allowed

groupobjectoptional

Nested results for the next grouping field.

Show properties

Recursive object

400Bad requestapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
401Unauthorizedapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
GET/v1/listings/data/Member
GET /v1/listings/data/Member HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Response example
{
  "value": [
    {
      "@odata.id": "Member('demo_member001')",
      "HistoryTransactional": "Historical",
      "JobTitle": "Senior Real Estate Agent",
      "LastLoginTimestamp": "2024-03-14T16:30:00.000000Z",
      "Media": "demo_member_photo001",
      "MemberAddress1": "123 Main Street",
      "MemberAddress2": "Suite 200",
      "MemberAlternateId": "ALT001",
      "MemberAOR": "Demo Board of Realtors",
      "MemberAORkey": "demo_board_001",
      "MemberAORMlsId": "DBR001",
      "MemberAssociationComments": "Active member since 2018, serves on technology committee",
      "MemberBillingPreference": "Monthly",
      "MemberBio": "Jane Smith is a dedicated real estate professional with over 8 years of experience helping families find their perfect home in the Springfield area.",
      "MemberCarrierRoute": "C032",
      "MemberCity": "Springfield",
      "MemberCommitteeCount": 2,
      "MemberCountry": "US",
      "MemberCountyOrParish": "Madison County",
      "MemberDesignation": "ABR, GRI, SRES",
      "MemberDirectPhone": "555-987-6543",
      "MemberEmail": "[email protected]",
      "MemberFax": "555-987-6544",
      "MemberFirstName": "Jane",
      "MemberFullName": "Jane Marie Smith",
      "MemberHomePhone": "555-555-1234",
      "MemberIsAssistantTo": null,
      "MemberKey": "demo_member001",
      "MemberLanguages": "English, Spanish",
      "MemberLastName": "Smith",
      "MemberLoginId": "jsmith001",
      "MemberMailOptOutYN": false,
      "MemberMiddleName": "Marie",
      "MemberMlsAccessYN": true,
      "MemberMlsId": "AG123456",
      "MemberMlsSecurityClass": "Standard",
      "MemberMobilePhone": "555-444-3333",
      "MemberNamePrefix": "Ms.",
      "MemberNameSuffix": null,
      "MemberNationalAssociationEntryDate": "2018-06-15",
      "MemberNationalAssociationId": "NAR987654",
      "MemberNickname": "Jane",
      "MemberOfficePhone": "555-123-4567",
      "MemberOfficePhoneExt": "201",
      "MemberOtherPhone": "555-777-8888",
      "MemberOtherPhoneType": "Assistant",
      "MemberPager": null,
      "MemberPassword": null,
      "MemberPasswordModificationTimestamp": null,
      "MemberPhoto": "https://photos.demo.com/members/jane_smith.jpg",
      "MemberPhotoModificationTimestamp": "2024-01-15T10:00:00.000000Z",
      "MemberPostalCode": "12345",
      "MemberPostalCodePlus4": "6789",
      "MemberPreferredPhone": "555-987-6543",
      "MemberPreferredPhoneExt": null,
      "MemberPublicAddress": "123 Main Street, Springfield, IL 12345",
      "MemberSocialMediaYN": true,
      "MemberSpecialties": "Luxury Homes, First-Time Buyers, Relocation",
      "MemberStartDate": "2016-03-01",
      "MemberStateOrProvince": "IL",
      "MemberStateLicense": "RE987654321",
      "MemberStateLicenseState": "IL",
      "MemberStatus": "Active",
      "MemberTollFreePhone": null,
      "MemberType": "Agent",
      "MemberURL": "https://www.demorealty.com/jane-smith",
      "MemberVoiceMail": "555-987-6545",
      "MemberVoiceMailExt": null,
      "ModificationTimestamp": "2024-03-14T16:30:00.000000Z",
      "Office": "demo_office_001",
      "OfficeKey": "demo_office_001",
      "OfficeMlsId": "OF567890",
      "OriginatingSystemID": "DMS_MEM_001",
      "OriginatingSystemKey": "demo_system",
      "OriginatingSystemMemberKey": "member_jane_001",
      "OriginatingSystemName": "Demo MLS System",
      "PrimaryAor": "Demo Board of Realtors",
      "PrimaryAorMlsId": "DBR001",
      "SocialMediaType": "Facebook, LinkedIn, Instagram",
      "SourceSystemID": "SRC_001",
      "SourceSystemKey": "source_system_demo",
      "SourceSystemMemberKey": "src_jane_001",
      "SourceSystemName": "Demo Source System",
      "Subscriptions": "MLS Access, Mobile App, Market Reports"
    },
    {
      "@odata.id": "Member('demo_member002')",
      "HistoryTransactional": "Current",
      "JobTitle": "Real Estate Broker",
      "LastLoginTimestamp": "2024-03-15T08:45:00.000000Z",
      "Media": "demo_member_photo002",
      "MemberAddress1": "456 Oak Avenue",
      "MemberAddress2": null,
      "MemberAlternateId": "ALT002",
      "MemberAOR": "River County Board of Realtors",
      "MemberAORkey": "river_board_001",
      "MemberAORMlsId": "RBR001",
      "MemberAssociationComments": "Board member since 2015, former president",
      "MemberBillingPreference": "Quarterly",
      "MemberBio": "Mike Johnson is a licensed broker with 12 years of experience specializing in residential and commercial properties in the River County area.",
      "MemberCarrierRoute": "C045",
      "MemberCity": "Riverside",
      "MemberCommitteeCount": 4,
      "MemberCountry": "US",
      "MemberCountyOrParish": "River County",
      "MemberDesignation": "CRS, CCIM, SIOR",
      "MemberDirectPhone": "555-246-8101",
      "MemberEmail": "[email protected]",
      "MemberFax": "555-246-8102",
      "MemberFirstName": "Mike",
      "MemberFullName": "Michael David Johnson",
      "MemberHomePhone": "555-333-2222",
      "MemberIsAssistantTo": null,
      "MemberKey": "demo_member002",
      "MemberLanguages": "English",
      "MemberLastName": "Johnson",
      "MemberLoginId": "mjohnson002",
      "MemberMailOptOutYN": false,
      "MemberMiddleName": "David",
      "MemberMlsAccessYN": true,
      "MemberMlsId": "AG789012",
      "MemberMlsSecurityClass": "Administrator",
      "MemberMobilePhone": "555-777-8888",
      "MemberNamePrefix": "Mr.",
      "MemberNameSuffix": null,
      "MemberNationalAssociationEntryDate": "2012-04-10",
      "MemberNationalAssociationId": "NAR123456",
      "MemberNickname": "Mike",
      "MemberOfficePhone": "555-246-8100",
      "MemberOfficePhoneExt": "100",
      "MemberOtherPhone": null,
      "MemberOtherPhoneType": null,
      "MemberPager": null,
      "MemberPassword": null,
      "MemberPasswordModificationTimestamp": null,
      "MemberPhoto": "https://photos.demo.com/members/mike_johnson.jpg",
      "MemberPhotoModificationTimestamp": "2024-02-20T14:30:00.000000Z",
      "MemberPostalCode": "54321",
      "MemberPostalCodePlus4": "0987",
      "MemberPreferredPhone": "555-246-8101",
      "MemberPreferredPhoneExt": null,
      "MemberPublicAddress": "456 Oak Avenue, Riverside, IL 54321",
      "MemberSocialMediaYN": true,
      "MemberSpecialties": "Commercial Real Estate, Investment Properties, New Construction",
      "MemberStartDate": "2012-01-15",
      "MemberStateOrProvince": "IL",
      "MemberStateLicense": "BR456789012",
      "MemberStateLicenseState": "IL",
      "MemberStatus": "Active",
      "MemberTollFreePhone": "800-555-MIKE",
      "MemberType": "Broker",
      "MemberURL": "https://www.riverside.com/mike-johnson",
      "MemberVoiceMail": "555-246-8103",
      "MemberVoiceMailExt": null,
      "ModificationTimestamp": "2024-03-15T08:45:00.000000Z",
      "Office": "demo_office_002",
      "OfficeKey": "demo_office_002",
      "OfficeMlsId": "OF123456",
      "OriginatingSystemID": "DMS_MEM_002",
      "OriginatingSystemKey": "demo_system",
      "OriginatingSystemMemberKey": "member_mike_002",
      "OriginatingSystemName": "Demo MLS System",
      "PrimaryAor": "River County Board of Realtors",
      "PrimaryAorMlsId": "RBR001",
      "SocialMediaType": "LinkedIn, Twitter",
      "SourceSystemID": "SRC_002",
      "SourceSystemKey": "source_system_demo",
      "SourceSystemMemberKey": "src_mike_002",
      "SourceSystemName": "Demo Source System",
      "Subscriptions": "Full MLS Access, Analytics Package, Lead Management"
    }
  ],
  "@odata.count": 2,
  "@odata.totalCount": 3456,
  "@odata.nextLink": "https://api.anyprop.com/v1/listings/data/Member/skiptoken/demo_member_skip_789"
}

Available $filter fields

MemberEmail, MemberFullName, MemberMlsId, MemberStateLicense, MemberStateOrProvince, MemberStatus, ModificationTimestamp, OfficeKey, OfficeMlsId, OfficeName, OriginatingSystemName, anyprop_MemberPhone

Internal Non-RESO Fields

  • anyprop_MemberPhone - Searches across all member phone number fields: MemberDirectPhone, MemberHomePhone, MemberMobilePhone, MemberOfficePhone, MemberPreferredPhone, MemberTollFreePhone

Note: Phone number fields can be queried in either the raw form from the MLS or a "normalized" form (all numeric).

Office Resource

Get office info

GEThttps://api.anyprop.com/v1/listings/data/Office

Retrieve office data with support for OData query options

Authorizations
Authorizationstringrequired

Bearer authentication header of the form Bearer <token>.

Query parameters
$filterstringoptional

OData filter expression

Example: contains(OriginatingSystemName, 'sample')

$selectstringoptional

Select specific fields

Example: OfficeMlsId

$orderbystringoptional

Order results by specified fields (append 'desc' for descending order)

Example: ModificationTimestamp desc

$topintegeroptional

Limit returned listing records. Default: 10; maximum: 50,000. Set $top=0 to return only aggregation results.

Default: 10

Minimum: 0

Maximum: 50000

$skipintegeroptional

Skip number of results

Default: 0

$ignorenullsbooleanoptional

Ignore null fields and omit them from the results

Example: true

Default: false

$applystringoptional

Group records or calculate an aggregate metric. See the $apply reference for syntax, examples, and limits.

Example: groupby((OriginatingSystemName,ListingId))

Maximum length: 500

Responses
200Successful responseapplication/json
valueobject[]optional
Show item properties

Additional properties allowed

@odata.countintegeroptional

Number of results in current response

Example: 2

@odata.totalCountintegeroptional

Total matches (may be estimated).

Example: 892

@odata.nextLinkstringoptional

URL for next page of results

Example: https://api.anyprop.com/v1/listings/data/Office/skiptoken/demo_office_skip_321

aggregateobjectoptional

Aggregate values for matching records.

Show properties

Additional properties allowed

groupobjectoptional

Grouped results for matching records.

Show properties
groupbystringrequired

Grouping field.

Example: City

countintegerrequired

Number of groups returned.

Example: 1

bucketsobject[]required
Show item properties
keystring | number | booleanrequired

Group value; string keys use lowercase.

Show properties
Option 1
Option 2
Option 3
countintegerrequired

Number of matching records in the group.

Example: 3

metricsobjectoptional

Aggregate values for this group.

Show properties

Additional properties allowed

groupobjectoptional

Nested results for the next grouping field.

Show properties

Recursive object

400Bad requestapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
401Unauthorizedapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
GET/v1/listings/data/Office
GET /v1/listings/data/Office HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Response example
{
  "value": [
    {
      "@odata.id": "Office('demo_office001')",
      "BillingOfficeKey": "demo_billing_001",
      "FranchiseAffiliation": "Century 21",
      "FranchiseNationalAssociationID": "C21NAT001",
      "HistoryTransactional": "Current",
      "IDXOfficeParticipationYN": true,
      "MainOffice": "demo_main_office_001",
      "MainOfficeKey": "demo_main_office_001",
      "MainOfficeMlsId": "MAIN001",
      "Media": "demo_office_photo001",
      "ModificationTimestamp": "2024-03-15T09:00:00.000000Z",
      "NumberOfBranches": 3,
      "NumberOfNonMemberSalespersons": 2,
      "OfficeAddress1": "123 Main Street",
      "OfficeAddress2": "Suite 200",
      "OfficeAlternateId": "ALT_OFF_001",
      "OfficeAOR": "Demo Board of Realtors",
      "OfficeAORkey": "demo_board_001",
      "OfficeAORMlsId": "DBR001",
      "OfficeAssociationComments": "Charter member since 1995, active in community outreach",
      "OfficeBio": "Demo Realty Group has been serving the Springfield community for over 25 years, providing exceptional real estate services with a commitment to integrity and client satisfaction.",
      "OfficeBranchType": "Main Office",
      "OfficeBroker": "demo_broker_001",
      "OfficeBrokerKey": "demo_broker_001",
      "OfficeBrokerMlsId": "BR001",
      "OfficeBrokerNationalAssociationID": "NAR_BR001",
      "OfficeCity": "Springfield",
      "OfficeCorporateLicense": "CORP123456789",
      "OfficeCountry": "US",
      "OfficeCountyOrParish": "Madison County",
      "OfficeEmail": "[email protected]",
      "OfficeFax": "555-123-4568",
      "OfficeKey": "demo_office_001",
      "OfficeMailAddress1": "PO Box 12345",
      "OfficeMailAddress2": null,
      "OfficeMailCareOf": null,
      "OfficeMailCity": "Springfield",
      "OfficeMailCountry": "US",
      "OfficeMailCountyOrParish": "Madison County",
      "OfficeMailPostalCode": "12346",
      "OfficeMailPostalCodePlus4": "0001",
      "OfficeMailStateOrProvince": "IL",
      "OfficeManager": "demo_manager_001",
      "OfficeManagerKey": "demo_manager_001",
      "OfficeManagerMlsId": "MGR001",
      "OfficeMlsId": "OF567890",
      "OfficeName": "Demo Realty Group",
      "OfficeNationalAssociationId": "NAR_OF567890",
      "OfficePhone": "555-123-4567",
      "OfficePhoneExt": null,
      "OfficePostalCode": "12345",
      "OfficePostalCodePlus4": "6789",
      "OfficeStateOrProvince": "IL",
      "OfficeStatus": "Active",
      "OfficeType": "Real Estate",
      "OfficeURL": "https://www.demorealty.com",
      "OriginalEntryTimestamp": "2024-01-01T08:00:00.000000Z",
      "OriginatingSystemID": "DOS_001",
      "OriginatingSystemKey": "demo_office_system",
      "OriginatingSystemName": "Demo Office System",
      "OriginatingSystemOfficeID": "DOS_OFF_001",
      "OriginatingSystemOfficeKey": "orig_off_001",
      "SocialMediaType": "Facebook, LinkedIn, Instagram",
      "SourceSystemID": "SS_OFF_001",
      "SourceSystemKey": "source_office_system",
      "SourceSystemName": "Demo Source System",
      "SourceSystemOfficeID": "SS_OFFICE_001",
      "SourceSystemOfficeKey": "src_off_001"
    },
    {
      "@odata.id": "Office('demo_office002')",
      "BillingOfficeKey": "demo_billing_002",
      "FranchiseAffiliation": "Independent",
      "FranchiseNationalAssociationID": null,
      "HistoryTransactional": "Current",
      "IDXOfficeParticipationYN": true,
      "MainOffice": "demo_office_002",
      "MainOfficeKey": "demo_office_002",
      "MainOfficeMlsId": "OF123456",
      "Media": "demo_office_photo002",
      "ModificationTimestamp": "2024-03-20T11:30:00.000000Z",
      "NumberOfBranches": 1,
      "NumberOfNonMemberSalespersons": 0,
      "OfficeAddress1": "456 Oak Avenue",
      "OfficeAddress2": null,
      "OfficeAlternateId": "ALT_OFF_002",
      "OfficeAOR": "River County Board of Realtors",
      "OfficeAORkey": "river_board_001",
      "OfficeAORMlsId": "RBR001",
      "OfficeAssociationComments": "Member since 2010, specializes in residential properties",
      "OfficeBio": "Riverside Realty is a boutique real estate firm focusing on personalized service and local market expertise in the River County area.",
      "OfficeBranchType": "Main Office",
      "OfficeBroker": "demo_broker_002",
      "OfficeBrokerKey": "demo_broker_002",
      "OfficeBrokerMlsId": "BR002",
      "OfficeBrokerNationalAssociationID": "NAR_BR002",
      "OfficeCity": "Riverside",
      "OfficeCorporateLicense": "CORP987654321",
      "OfficeCountry": "US",
      "OfficeCountyOrParish": "River County",
      "OfficeEmail": "[email protected]",
      "OfficeFax": "555-246-8102",
      "OfficeKey": "demo_office_002",
      "OfficeMailAddress1": "456 Oak Avenue",
      "OfficeMailAddress2": null,
      "OfficeMailCareOf": null,
      "OfficeMailCity": "Riverside",
      "OfficeMailCountry": "US",
      "OfficeMailCountyOrParish": "River County",
      "OfficeMailPostalCode": "54321",
      "OfficeMailPostalCodePlus4": "0987",
      "OfficeMailStateOrProvince": "IL",
      "OfficeManager": "demo_manager_002",
      "OfficeManagerKey": "demo_manager_002",
      "OfficeManagerMlsId": "MGR002",
      "OfficeMlsId": "OF123456",
      "OfficeName": "Riverside Realty",
      "OfficeNationalAssociationId": "NAR_OF123456",
      "OfficePhone": "555-246-8100",
      "OfficePhoneExt": null,
      "OfficePostalCode": "54321",
      "OfficePostalCodePlus4": "0987",
      "OfficeStateOrProvince": "IL",
      "OfficeStatus": "Active",
      "OfficeType": "Real Estate",
      "OfficeURL": "https://www.riversiderealty.com",
      "OriginalEntryTimestamp": "2024-02-15T10:00:00.000000Z",
      "OriginatingSystemID": "DOS_002",
      "OriginatingSystemKey": "demo_office_system",
      "OriginatingSystemName": "Demo Office System",
      "OriginatingSystemOfficeID": "DOS_OFF_002",
      "OriginatingSystemOfficeKey": "orig_off_002",
      "SocialMediaType": "LinkedIn, Google Business",
      "SourceSystemID": "SS_OFF_002",
      "SourceSystemKey": "source_office_system",
      "SourceSystemName": "Demo Source System",
      "SourceSystemOfficeID": "SS_OFFICE_002",
      "SourceSystemOfficeKey": "src_off_002"
    }
  ],
  "@odata.count": 2,
  "@odata.totalCount": 892,
  "@odata.nextLink": "https://api.anyprop.com/v1/listings/data/Office/skiptoken/demo_office_skip_321"
}

Available $filter fields

ModificationTimestamp, OfficeEmail, OfficeMlsId, OfficeName, OfficePhone, OfficeStateOrProvince, OfficeStatus, OriginatingSystemName

OpenHouse Resource

Get open house info

GEThttps://api.anyprop.com/v1/listings/data/OpenHouse

Retrieve open house data with support for OData query options

Authorizations
Authorizationstringrequired

Bearer authentication header of the form Bearer <token>.

Query parameters
$filterstringoptional

OData filter expression

Example: contains(OriginatingSystemName, 'sample')

$selectstringoptional

Select specific fields

Example: OfficeMlsId

$orderbystringoptional

Order results by specified fields (append 'desc' for descending order)

Example: ModificationTimestamp desc

$topintegeroptional

Limit returned listing records. Default: 10; maximum: 50,000. Set $top=0 to return only aggregation results.

Default: 10

Minimum: 0

Maximum: 50000

$skipintegeroptional

Skip number of results

Default: 0

$ignorenullsbooleanoptional

Ignore null fields and omit them from the results

Example: true

Default: false

$applystringoptional

Group records or calculate an aggregate metric. See the $apply reference for syntax, examples, and limits.

Example: groupby((OriginatingSystemName,ListingId))

Maximum length: 500

Responses
200Successful responseapplication/json
valueobject[]optional
Show item properties

Additional properties allowed

@odata.countintegeroptional

Number of results in current response

Example: 2

@odata.totalCountintegeroptional

Total matches (may be estimated).

Example: 247

@odata.nextLinkstringoptional

URL for next page of results

Example: https://api.anyprop.com/v1/listings/data/OpenHouse/skiptoken/demo_openhouse_skip_654

aggregateobjectoptional

Aggregate values for matching records.

Show properties

Additional properties allowed

groupobjectoptional

Grouped results for matching records.

Show properties
groupbystringrequired

Grouping field.

Example: City

countintegerrequired

Number of groups returned.

Example: 1

bucketsobject[]required
Show item properties
keystring | number | booleanrequired

Group value; string keys use lowercase.

Show properties
Option 1
Option 2
Option 3
countintegerrequired

Number of matching records in the group.

Example: 3

metricsobjectoptional

Aggregate values for this group.

Show properties

Additional properties allowed

groupobjectoptional

Nested results for the next grouping field.

Show properties

Recursive object

400Bad requestapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
401Unauthorizedapplication/json
errorobjectoptional
Show properties
codestringoptional
messagestringoptional
GET/v1/listings/data/OpenHouse
GET /v1/listings/data/OpenHouse HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Response example
{
  "value": [
    {
      "@odata.id": "OpenHouse('demo_openhouse001')",
      "AppointmentRequiredYN": false,
      "HistoryTransactional": "Current",
      "Listing": "demo_prop001",
      "ListingId": "DEMO001",
      "ListingKey": "demo_prop001",
      "LivestreamOpenHouseURL": "https://livestream.demo.com/openhouse001",
      "Media": "demo_openhouse_media001",
      "ModificationTimestamp": "2024-03-15T14:00:00.000000Z",
      "OpenHouseAttendedBy": "Jane Smith",
      "OpenHouseDate": "2024-03-23",
      "OpenHouseEndTime": "2024-03-23T16:00:00.000000Z",
      "OpenHouseId": "OH001",
      "OpenHouseKey": "demo_openhouse001",
      "OpenHouseRemarks": "Beautiful home in desirable neighborhood. Refreshments will be provided. Parking available on street and in driveway.",
      "OpenHouseStartTime": "2024-03-23T14:00:00.000000Z",
      "OpenHouseStatus": "Confirmed",
      "OpenHouseType": "Public",
      "OriginalEntryTimestamp": "2024-03-15T10:30:00.000000Z",
      "OriginatingSystem": "Demo Open House System",
      "OriginatingSystemID": "DOHS001",
      "OriginatingSystemKey": "demo_openhouse_system",
      "OriginatingSystemName": "demo_openhouse_system",
      "Refreshments": "Coffee, water, cookies",
      "ShowingAgent": "demo_agent_jane001",
      "ShowingAgentFirstName": "Jane",
      "ShowingAgentKey": "demo_agent_jane001",
      "ShowingAgentLastName": "Smith",
      "ShowingAgentMlsID": "AG123456",
      "SocialMedia": "Facebook Event Created",
      "SourceSystem": "Demo MLS System",
      "SourceSystemID": "DMS_OH_001",
      "SourceSystemKey": "demo_mls_system",
      "SourceSystemName": "demo_mls_system"
    },
    {
      "@odata.id": "OpenHouse('demo_openhouse002')",
      "AppointmentRequiredYN": true,
      "HistoryTransactional": "Current",
      "Listing": "demo_prop002",
      "ListingId": "DEMO002",
      "ListingKey": "demo_prop002",
      "LivestreamOpenHouseURL": null,
      "Media": "demo_openhouse_media002",
      "ModificationTimestamp": "2024-03-20T16:30:00.000000Z",
      "OpenHouseAttendedBy": "Mike Johnson",
      "OpenHouseDate": "2024-03-24",
      "OpenHouseEndTime": "2024-03-24T15:30:00.000000Z",
      "OpenHouseId": "OH002",
      "OpenHouseKey": "demo_openhouse002",
      "OpenHouseRemarks": "Charming ranch home perfect for first-time buyers. Please call ahead to schedule viewing time. Small groups preferred.",
      "OpenHouseStartTime": "2024-03-24T13:00:00.000000Z",
      "OpenHouseStatus": "Confirmed",
      "OpenHouseType": "Private",
      "OriginalEntryTimestamp": "2024-03-20T12:00:00.000000Z",
      "OriginatingSystem": "Demo Open House System",
      "OriginatingSystemID": "DOHS002",
      "OriginatingSystemKey": "demo_openhouse_system",
      "OriginatingSystemName": "demo_openhouse_system",
      "Refreshments": "Light refreshments available",
      "ShowingAgent": "demo_agent_mike002",
      "ShowingAgentFirstName": "Mike",
      "ShowingAgentKey": "demo_agent_mike002",
      "ShowingAgentLastName": "Johnson",
      "ShowingAgentMlsID": "AG789012",
      "SocialMedia": "LinkedIn Post Shared",
      "SourceSystem": "Demo MLS System",
      "SourceSystemID": "DMS_OH_002",
      "SourceSystemKey": "demo_mls_system",
      "SourceSystemName": "demo_mls_system"
    }
  ],
  "@odata.count": 2,
  "@odata.totalCount": 247,
  "@odata.nextLink": "https://api.anyprop.com/v1/listings/data/OpenHouse/skiptoken/demo_openhouse_skip_654"
}

Available $filter fields

ListingId, ModificationTimestamp, OpenHouseDate, OpenHouseKey, OriginatingSystemName

Query Parameters

OData Query Support

All resources support the following OData query parameters:

  • $filter: Filter results using OData filter expressions
  • $select: Select specific fields to return
  • $top: Limit the number of listing records (default: 10, max: 50,000). Use 0 for aggregation-only requests.
  • $skip: Skip a number of results for pagination
  • $apply: Group records or calculate an aggregate metric. See the $apply reference.

Additionally, the Property resource supports:

  • $expand: Include related Media, OpenHouse, PropertyChange, PreferredMedia, PropertyRooms, and PropertyUnitTypes data

Our API supports comprehensive OData filtering capabilities:

Comparison Operators

  • eq: Equal to
  • ne: Not equal to
  • gt: Greater than
  • ge: Greater than or equal to
  • lt: Less than
  • le: Less than or equal to

Logical Operators

  • and: Both conditions must be true
  • or: Either condition must be true
  • not: Negates the condition

String Functions

  • contains(field, 'value'): Checks if field contains the specified value
  • startswith(field, 'value'): Checks if field starts with the specified value
  • endswith(field, 'value'): Checks if field ends with the specified value

Example complex queries:

# Multiple conditions
$filter=PropertyType eq 'Residential' and StandardStatus eq 'Active'

# String function with logical operator
$filter=startswith(OfficeMlsId, 'P') or contains(OfficeName, 'Real')

# Date comparison
$filter=ModificationTimestamp gt '2023-01-01T00:00:00Z'

API Grouping Results

Use $apply to group matching records, calculate one aggregate metric, or calculate a metric within each group. String grouping is case insensitive.

Syntax

Set $apply to one of these expressions:

GoalExpression
Group matching recordsgroupby((City,PropertyType))
Calculate one metricaggregate(ListPrice with average)
Calculate a metric within each groupgroupby((City),aggregate(ListPrice with median))

Standalone Aggregation

Calculate a metric across the matching records:

$filter=StandardStatus eq 'Active' and PropertyType eq 'Residential'
$apply=aggregate(ListPrice with average)
$top=0

$filter applies to both listings and aggregations. $top=0 returns only aggregation results; a positive $top returns listings too.

Example response:

{
  "value": [],
  "aggregate": {
    "average_ListPrice": 500000
  },
  "@odata.totalCount": 3,
  "@odata.count": 0
}

Aggregation results appear in aggregate, with names such as average_ListPrice. @odata.count is the number of listings returned; @odata.totalCount is total matches (may be estimated).

Grouped Aggregation

Calculate a metric within each group:

$filter=StandardStatus eq 'Active' and PropertyType eq 'Residential'
$apply=groupby((City),aggregate(ListPrice with median))
$top=0

Example response:

{
  "value": [],
  "group": {
    "groupby": "City",
    "count": 1,
    "buckets": [
      {
        "key": "miami",
        "count": 3,
        "metrics": {
          "median_ListPrice": 500000
        }
      }
    ]
  },
  "@odata.totalCount": 3,
  "@odata.count": 0
}

Each bucket contains its group value in key, its matching-record count in count, and calculated values in metrics. group.count is the number of groups returned. String keys use lowercase.

Multiple grouping fields create nested group objects, with metrics in the innermost buckets:

$apply=groupby((City,PropertyType),aggregate(ListPrice with average))

Aggregate Functions

Use $apply to calculate a metric for all matching records or within each group.

FunctionField typeResult
average, avgNumericArithmetic mean. avg uses the same result name as average.
minNumeric or date/timeLowest value.
maxNumeric or date/timeHighest value.
medianNumericApproximate 50th percentile.
p10, p25, p50, p75, p90, p95NumericApproximate value at the specified percentile.

Use fields available to your account. Numeric fields support all functions above. Date/time fields support min and max and return Unix timestamps in milliseconds.

Median and percentile results are approximate. Calculations exclude records without a value for the metric field.

Limits and Errors

  • One aggregate metric is supported per request. Send separate requests to calculate multiple metrics.
  • Result names are generated automatically. as aliases are not supported.
  • The supported metric functions are those listed above; sum, countdistinct, and explicit $count aggregate expressions are not supported. Grouping includes bucket counts automatically.
  • $apply accepts at most 500 characters and up to three distinct grouping fields.
  • Bucket limits at each grouping level are 65,000 for one grouping field, 254 for two fields, and 40 for three fields. A capped response may omit groups; group.count counts only returned buckets.
  • @odata.nextLink retrieves more listing records. Aggregations are returned only on the first page.

Unknown fields, fields outside your account permissions, incompatible field types, and unsupported aggregation syntax return HTTP 400 with an apply_error. For example, aggregate(City with average) returns:

{
  "error": {
    "code": "apply_error",
    "message": "Aggregate field must be numeric for average: City"
  }
}

Response Schema

Grouping without an aggregate metric returns the following:

  • group
    • groupby: Field being grouped.
    • count: Number of returned groups.
    • buckets: Array of group results.
      • key: Group value.
      • count: Items in the group.
      • group: Nested grouping (for multiple fields).

Example Response

{
  "group": {
    "groupby": "OriginatingSystemName",
    "count": 18,
    "buckets": [
      {
        "key": "global mls",
        "count": 89656,
        "group": {
          "groupby": "StateOrProvince",
          "count": 17,
          "buckets": [
            {
              "key": "fl",
              "count": 87267
            },
            {
              "key": "",
              "count": 2307
            }
          ]
        }
      }
    ]
  }
}

Error Handling

All errors follow the standard OData format:

{
  "error": {
    "code": "error_code",
    "message": "Human readable error message"
  }
}
AnyProp · Developer documentation