{
  "openapi": "3.0.1",
  "info": {
    "title": "RateMyAgent Scraper — Real Estate Agent Leads AU NZ US",
    "description": "178,789 real-estate agents from RateMyAgent (38,170 AU · 8,985 NZ · 131,634 US): name, agency, suburb/state/postcode, star rating, review count, sold + for-sale counts, median sale price, property-type specialties, recent sold listings, plus phone and email — each on ~99% of rows.",
    "version": "0.1",
    "x-build-id": "uTDE0guU7uQvovPdO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~ratemyagent-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-ratemyagent-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapersdelight~ratemyagent-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-ratemyagent-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapersdelight~ratemyagent-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-ratemyagent-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Which RateMyAgent directories to crawl. AU = ratemyagent.com.au, NZ = ratemyagent.co.nz, US = ratemyagent.com. Pick more than one and they are crawled in the order listed. This is the ONLY pre-fetch filter — every other filter below runs after a profile is fetched.",
            "items": {
              "type": "string",
              "enum": [
                "AU",
                "NZ",
                "US"
              ],
              "enumTitles": [
                "Australia — 38,170 agents",
                "New Zealand — 8,985 agents",
                "United States — 131,634 agents"
              ]
            },
            "default": [
              "AU"
            ]
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "How many agent records to return, and your hard cost cap: 50 = $0.15, 1,000 = $3.00, 10,000 = $30. One record is one agent. RateMyAgent publishes 178,789 agents across the three countries. The prefilled 50 is a smoke test and takes under two minutes — raise it once the rows look right. Pace yourself on the run timeout: 1,000 agents took about 29 minutes.",
            "default": 1000
          },
          "skip": {
            "title": "Skip (page across runs)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip this many agents before returning any. Set it to the number you already have to continue where the last run stopped — e.g. run 1 with Max results 5,000, then run 2 with Skip 5,000. Sitemap order is stable between runs.",
            "default": 0
          },
          "profileUrls": {
            "title": "Agent profile URLs — paste them here instead",
            "type": "array",
            "description": "Paste exact RateMyAgent agent URLs (https://www.ratemyagent.com.au/real-estate-agent/troy-schultz-bz557/sales/overview) or bare agent codes (bz557) to refresh a list you already have. This skips the sitemaps entirely and overrides Regions and every filter. The region is taken from each URL's domain; bare codes use the first region selected above. An entry that is not a RateMyAgent agent profile is skipped with a warning naming it, and the rest are still scraped; only a list with nothing usable in it stops the run (cleanly, with nothing charged).",
            "items": {
              "type": "string"
            }
          },
          "states": {
            "title": "States / regions",
            "type": "array",
            "description": "Keep only agents who list at least one market area in these states/regions (case-insensitive, exact match on the part RateMyAgent prints). Leave empty for every state.",
            "items": {
              "type": "string"
            }
          },
          "suburbs": {
            "title": "Suburbs / towns / ZIPs",
            "type": "array",
            "description": "Keep only agents who list at least one market area matching these suburb names (AU/NZ, e.g. Bondi, Toorak, Takapuna) or ZIP codes (US, e.g. 33126). Case-insensitive exact match on one comma-separated part of the market string. A rare suburb can cost hundreds of fetches per row kept. Leave empty for every suburb.",
            "items": {
              "type": "string"
            }
          },
          "minRating": {
            "title": "Minimum star rating",
            "enum": [
              "0",
              "3",
              "4",
              "4.5",
              "4.8"
            ],
            "type": "string",
            "description": "Keep only agents at or above this RateMyAgent star rating. Rating is present on 100% of profiles, but an agent with no reviews carries 0.0 — pair this with Minimum reviews if you want genuinely reviewed agents.",
            "default": "0"
          },
          "minReviewCount": {
            "title": "Minimum review count",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only agents with at least this many client reviews. Review count is on 100% of profiles; many agents sit at 0, so this is the filter that separates active, marketed agents from the long tail.",
            "default": 0
          },
          "minSoldCount": {
            "title": "Minimum properties sold",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only agents whose RateMyAgent sales record shows at least this many completed sales. Read from a second API call, so it costs one extra request per agent tested. Sold count is present on ~97% of agents.",
            "default": 0
          },
          "withEmailOnly": {
            "title": "Only agents with a published email",
            "type": "boolean",
            "description": "Keep only agents with an email address on file. Measured 99.1% fill across 1,366 agents (100% on samples up to 149, 98.8% on a 1,000-agent run), so this filter discards very little — it is here as a guarantee, not as a narrowing tool.",
            "default": false
          },
          "withPhoneOnly": {
            "title": "Only agents with a published phone",
            "type": "boolean",
            "description": "Keep only agents with a phone number on file. Also measured 99.3% fill across 1,366 agents (AU 98%, NZ 100%, US 100%).",
            "default": false
          },
          "claimedOnly": {
            "title": "Only claimed profiles",
            "type": "boolean",
            "description": "Keep only agents who have claimed their RateMyAgent profile (they logged in and took ownership of it). Claimed agents are far likelier to answer an outbound email.",
            "default": false
          },
          "includeRecentSales": {
            "title": "Include recent listings and sold prices",
            "type": "boolean",
            "description": "Adds activeListingCount, completedSaleCount, recentSoldPriceMin/Max and a recentListings array (up to 10 recent listings, each with status Active/Sold, address, suburb, price text, parsed price, beds/baths/cars and result date). Costs one extra API call per agent. Turn OFF for a lean, faster contact-only export.",
            "default": true
          },
          "includeBio": {
            "title": "Include the agent bio",
            "type": "boolean",
            "description": "Adds the agent's self-written bio (present on 59% of agents — AU 62%, NZ 80%, US 35%). Turn OFF for a much smaller dataset.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Parallel agents in flight. 8 is the tested default. Lower it to 3-4 if you see a lot of 'unreachable after retries' warnings; raising it above 10 does not make RateMyAgent faster.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave this alone unless you know why you are changing it. Re-measured 2026-08-16, single-shot: a datacenter exit answered 18/20 (90%) and a residential exit matched to the country 20/20 (100%). One dropped call in ten is a missing agent, so this Actor defaults to Apify RESIDENTIAL with the exit country set per region (AU/NZ/US).",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}