AU & NZ Real Estate Agent OSINT - Profiles & Decision Scores
Pricing
from $2.00 / 1,000 agent reports
AU & NZ Real Estate Agent OSINT - Profiles & Decision Scores
Build OSINT intelligence reports on real estate agents across Australia and New Zealand. Extract profiles, contacts, agency details, active listings, sales history, reviews and media mentions. Each report includes an evidence-backed 0–100 decision score. Structured JSON for AI agents, APIs and MCP.
Pricing
from $2.00 / 1,000 agent reports
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Real-Estate Agent OSINT: Scored Agent Reports for Australia & NZ
Real-Estate Agent OSINT turns public real-estate data into one scored, explainable report per agent, for every Australian state and territory and New Zealand. Give it an agent's name, a profile link or a suburb, and it combines what is publicly known about the agent and adds sold history, public contacts, reviews, a licence check, who they list with and a 0 to 100 score. Export the dataset as JSON, CSV or Excel, call it from the API, or give it to an AI agent as a tool.
Why This Scraper?
- One report per agent. Name, agency, contacts, sold history, reviews, licence status, partners and a 0 to 100 score, all in one row.
- Australia and New Zealand. Every Australian state and territory plus New Zealand. Set
countrytonzfor New Zealand runs. - Find agents your way. Look up an agent by name, paste a profile link, or sweep a whole suburb.
- Contacts only where they are public. Phones and emails appear only when a public page shows them, so you never get guessed or scraped-from-nowhere contact details.
- Reviews you can trust. Ratings, review counts and the themes customers mention, with quoted examples.
- Built for schedules and AI. Get only new or changed agents on repeat runs, and give the results to an AI agent as a tool.
Use Cases
- Agency principals and recruiters: find rising agents, check licence status and see agency moves and key co-listing partners before a hire.
- Vendors choosing an agent: compare agents in one suburb on sold volume, reviews and licence standing.
- Proptech and lead-gen builders: enrich an agent database with cross-site identities, sold counts and contact details through the API.
- Mortgage brokers and conveyancers: build prospect lists of the top agents in a territory.
- AI and MCP agent builders: answer "who is the best agent in suburb X" with an explainable result your agent can quote.
Data You Get
Sample shape: values are illustrative placeholders with fake data, not a real person.
| Field | Example |
|---|---|
agentId | "agent_jane_sample_a1b2c3d4" |
name / title | "Jane Sample" / "Director / Licensee" |
country / region | "au" / "NSW" |
agencyName / agencyGroup | "Ray White Sample Town" / {"group": "Ray White"} |
suburbs | ["Bondi NSW"] |
phones / phoneDetails | numbers a page shows, each with its kind, source and basis |
emails / emailDetails | addresses a page shows, labelled personal or role |
socialLinks / socialLinkDetails | {"linkedin": "..."} / links with platform and kind |
bio / yearsExperienceStated | the agent's public profile text / 15 |
languages / specialities / awards | ["English", "Greek"] / labelled specialities / awards with year and source |
agency | name, website, mailbox, phone, address, logo, roster and business entity |
currentListings | {"count": 9, "suburbs": [...], "propertyTypes": [...], "priceTexts": [...]} |
soldSummary | {"count12m": 34, "count24m": 61, "volume12m": 52000000} |
soldHistory / soldHistoryComplete | each sale with address, date, price, method, source / true |
reviews | {"count": 96, "average": 4.6, "themes": [...]} |
licence / licenceCheck | licence number, status, expiry and any disciplinary findings / "matched" |
score | {"overall": 78, "pillars": {...}}: how the agent compares with others in the run |
network | how many partners the agent lists with, and the top ones |
sources | ["rma", "domain"]: where the data came from |
mediaMentions | press articles about the agent |
changeType | NEW, UPDATED, UNCHANGED or EXPIRED (scheduled runs) |
Other record types: in URL mode the rows are property, agency and news records, and in suburb mode with suburbLeaderboard on, each suburb also gets one ranked leaderboard row. New Zealand agents carry nzStats, servicedSuburbs and nzRecentSales instead of the Australian sold lists.
How to Use
- Pick a mode. Realestate (default) profiles agents from names, profile links or a suburb sweep. URL reads the links in
urlsand ignores the agent inputs. - Add your targets:
agentQueries(name and suburb),agentUrls, orsuburbs. For New Zealand setcountrytonz. - Switch the report sections you need on or off, and set Max results per run to control cost.
- Click Start. The actor collects every agent first and then scores them together, so rows arrive in the dataset when collection finishes.
Profile agents by name:
{"agentQueries": [{ "name": "Jane Sample", "suburb": "Bondi NSW" }],"maxItems": 5}
Sweep suburbs in several states:
{"suburbs": ["Applecross WA", "Bondi NSW", "Sandy Bay TAS"],"maxAgentsPerSuburb": 4,"maxItems": 12,"suburbLeaderboard": true}
Sweep New Zealand suburbs:
{"country": "nz","suburbs": ["Ponsonby, Auckland", "Thorndon, Wellington"],"maxAgentsPerSuburb": 4,"maxItems": 8}
Read pasted links (URL mode):
{"mode": "url","urls": ["https://reiwa.com.au/for-sale/applecross/"],"maxItems": 20}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/realestate-agent-osint").call(run_input={"agentQueries": [{"name": "Jane Sample", "suburb": "Bondi NSW"}],})for agent in client.dataset(run["defaultDatasetId"]).iterate_items():print(agent["name"], agent["score"]["overall"], agent["phones"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/realestate-agent-osint').call({agentQueries: [{ name: 'Jane Sample', suburb: 'Bondi NSW' }],});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Tips
- Names: type the name as the agent uses it. A similar but different name is treated as another person and is not charged.
- Suburbs: include the state or region (
"Bondi NSW","Ponsonby, Auckland"). - Licence: a licence is attached only when the register clearly matches the agent.
- Cost control:
maxItemsis the most agents a run will report, and one agent is one report. In URL mode it is shared across the links, with at least 1 record per link, so the default 5 with 16 default links returns up to 16 records. - Output views: the dataset opens on Overview, with further views for agents, profiles and contacts, press mentions, agencies and suburb leaderboards. Views pick columns, not rows.
Resume and recurring updates
- Resume: paste the ID of an interrupted run into
resumeFromRunIdand agents already reported are skipped, so you do not pay twice. - Only new or changed agents: turn on
incrementalModefor scheduled runs and keep the samestateKey. Each row is markedNEW,UPDATED,UNCHANGEDorEXPIRED, and unchanged agents are neither returned nor charged unlessemitUnchangedis on.
Send results into your apps (MCP connectors)
Optionally pipe the results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the run: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | enum | realestate | realestate (agent reports) or url (read pasted links). |
urls | array | 16 example links | URL mode only. Prefilled with one example of every supported listing, agency, directory and article link shape. Replace them to scope a run. maxItems is split evenly across the links. |
agentQueries | array | [] | {"name": "...", "suburb": "..."} pairs to profile. Only the exact name or a documented short or full form of the given name is collected and billed. |
agentUrls | array | [] | Agent profile links from the supported directories. |
suburbs | array | [] | Suburbs to sweep for all agents, best with state and postcode in Australia or with the region in New Zealand. |
maxAgentsPerSuburb | integer | 25 | Cap per suburb during a sweep, counted as people across the sources. |
country | enum | au | au (every Australian state and territory) or nz (New Zealand, every region). |
includeSoldHistory | boolean | true | Attach the full sold track record per agent. |
includeReviews | boolean | true | Fetch and analyse vendor reviews. |
includeLicenceCheck | boolean | true | Check the government licence registers (NSW, QLD and WA in Australia, the national register in New Zealand) and the disciplinary record. |
includeNetwork | boolean | true | Build the co-listing network and save network.html when an agent has a co-listing partner. |
includeAgencyData | boolean | true | Attach the agency block: website, general mailbox, phone, address, logo and roster names. |
includeCurrentListings | boolean | true | Attach the agent's current for-sale listings summary. |
includeAgentWebsites | boolean | true | Read the agent's public profile on the agency's own site and the New Zealand portals for emails, phones, awards and languages, only as a page shows them. |
includeMedia | boolean | true | Search the industry news site once per agent name and attach confirmed articles as mediaMentions. |
includeAgencyEntity | boolean | true | Australia: attach the agency's business entity from the public business register. Needs includeAgencyData. |
aiAnalysis | boolean | false | Deprecated: no longer used. Kept so saved tasks still start; the value is ignored. |
suburbLeaderboard | boolean | false | Push a ranked leaderboard record per suburb (needs at least three scored agents). |
maxItems | integer | 5 | Realestate mode: stop after this many agents, counted as people. URL mode: split evenly across the links, at least 1 record per link. |
proxyConfiguration | object | Apify connection service, AU | Connection settings for the run. Keep the default for the agent directories. See Plan Requirement. |
maxRequestsPerMin | integer | 24 | Polite pacing cap, per site. |
resumeFromRunId | string | (none) | Continue one interrupted run. |
incrementalMode | boolean | false | Return only new and changed agents on scheduled runs. |
stateKey | string | default | Name or share an incremental-mode state. |
emitUnchanged | boolean | false | Also return (and bill) unchanged agents. |
emitExpired | boolean | false | Also return agents gone from the source set. |
ignoreFieldsForChanges | array | [] | Extra fields, dotted paths allowed, that must not alone mark a record UPDATED (incremental mode only). |
mcpConnectors | array | (none) | Connectors to pipe results into (optional). |
notionParentPageUrl | string | (none) | Notion parent page (Notion connector only). |
maxNotifyListings | integer | 50 | Max items to export per connector. |
Output Example
Sample shape: values are illustrative placeholders with fake data, not a real person. Contact values are masked; field names and structure are those of a real row.
An Australian agent row (abridged):
{"agentId": "agent_jane_sample_a1b2c3d4","changeType": "NEW","name": "Jane Sample","title": "Director / Licensee","country": "au","agencyName": "Ray White Sample Town","suburbs": ["Bondi NSW"],"phones": ["[masked mobile]"],"emails": ["[masked personal email]"],"bio": "Jane has sold in the eastern suburbs since 2009.","yearsExperienceStated": 15,"languages": ["English", "Greek"],"agency": { "name": "Ray White Sample Town", "address": "1 Sample Street, Bondi NSW 2026", "teamSize": 12 },"currentListings": { "count": 9, "listingsRead": 9, "suburbs": [{ "suburb": "Bondi NSW", "count": 6 }] },"soldSummary": { "countAll": 214, "count12m": 34, "count24m": 61, "volume12m": 52000000 },"soldHistory": [{ "address": "12 Sample Street, Bondi NSW", "soldDate": "2025-11-14", "price": 2450000, "method": "Private treaty", "source": "rma" }],"soldHistoryComplete": true,"reviews": { "count": 96, "average": 4.6 },"licence": null,"licenceCheck": "withheld","score": {"overall": 78,"pillars": { "performance": 88, "reputation": 71, "experience": 64 }},"network": { "partnerCount": 12, "inRunPartnerCount": 1 },"sources": ["rma", "domain"]}
A New Zealand row carries these fields instead (abridged):
{"country": "nz","agencyName": "Sample Realty Remuera","nzStats": [{ "source": "realestate-nz", "soldTotal": 80, "sold12m": 28, "medianPrice": 1940000 }],"servicedSuburbs": ["Remuera", "Epsom", "Meadowbank"],"nzRecentSales": [{ "address": "3 Sample Road, Remuera", "suburb": "Remuera", "soldDate": "2026-09-12", "source": "realestate-nz" }],"licenceCheck": "matched"}
Plan Requirement
The agent directories are read through Apify's built-in connection service, which the default proxyConfiguration selects. Keep the default and run on an Apify plan that includes it. If a run cannot be served, the actor stops with a clear message and charges nothing for rows it did not deliver.
FAQ
How much does it cost?
The actor uses pay-per-event pricing: a small start event, one event per scored agent report, and separate events for sold history, reviews analysis, the co-listing network and suburb leaderboards, with lower prices on higher Apify plans. See the Pricing tab for the current prices, and use maxItems to cap the cost of a run.
Is it legal to scrape real-estate agent data?
The actor reads only publicly available pages and government register entries, and collects an email or phone only when a page displays it. You are responsible for using the data in line with the privacy, spam and marketing laws that apply to you, such as the Australian Privacy Act and Spam Act and the New Zealand Privacy Act, and with each site's terms.
Can I get only new or changed agents on a schedule?
Yes. Turn on incrementalMode with a fixed stateKey. Scheduled runs then return only NEW, UPDATED and (with emitExpired) EXPIRED agents, and unchanged agents are neither returned nor billed unless you set emitUnchanged.
Why did my run fail instead of returning an empty dataset?
If the sources do not answer, the run stops with a clear message instead of returning an empty result, and you are not charged for rows that were not delivered. Run it again later or lower maxRequestsPerMin.
Why are some contacts, prices or licences missing?
Contacts are collected only where a public page shows them, so some agents have no email or phone. New Zealand sources often keep prices private, and some states publish no searchable licence register, so those agents have no licence entry.
Can I use it with AI agents or MCP?
Yes. Call the actor as a tool through Apify's MCP server or the API. The output is structured data with source links, so your AI agent can quote it instead of guessing.
🔗 Want more Realestate data?
Pair this actor with these related scrapers from the same team:
| 🏠 Real Estate AU Extract detailed Australian real estate property listings with 30+ structured fields... | 🏠 RealestateCo NZ Search and extract all real estate properties for sale, rent, and sold across New Zealand... |
| 🏠 Real Estate AU Agents Scraper Scrape Australian real estate agent and agency profiles by suburb or profile URLs... | 🏠 REIWA Scraper Scrape REIWA.com.au across sale, rental, sold, commercial, business and rural properties... |
| 🏠 Homely.com.au Scrape Homely.com.au properties for sale, rent, and sold, plus agent finder, suburb... | 📇 HiPages Scraper Scrape business listings from HiPages Australia by category, location, or URL. Extract... |
💬 Support
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.