Model MatchHelp

Recipes

Find real estate agents in a market

Pull a ranked list of the agents who close transactions in a city, with buyer and seller volume and how many loan officers they work with.

Agents match on any of their location signals by default: their office, their listed city, and the markets where they close. Set locationSource to production to rank by where they actually transact.

The request

curl -X POST https://api.modelmatch.com/v1/agents \
  -H "x-api-key: mm_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "flatFilters": { "city": "Austin, TX", "producersOnly": true },
    "locationSource": "production",
    "period": "last12Months",
    "sort": [{ "field": "volume", "order": "desc" }],
    "pagination": { "size": 25 }
  }'
import { createClient } from "@model-match/api";

const client = createClient({ apiKey: process.env.MODEL_MATCH_API_KEY });

const result = await client.agents.list({
  body: {
    flatFilters: { city: "Austin, TX", producersOnly: true },
    locationSource: "production",
    period: "last12Months",
    sort: [{ field: "volume", order: "desc" }],
    pagination: { size: 25 },
  },
});

const rows = result.data.data; // one row per agent

With the MCP server connected, ask:

List the top 25 real estate agents closing deals in Austin, TX over the last 12 months. Show buyer vs seller volume and how many loan officers each works with.

Write cities as "City, ST" so the name binds to the right state. county takes a 5-digit FIPS code; zip takes a 5-digit ZIP.

What comes back

{
  "data": [
    {
      "id": "mma_8d5072986d54c67e",
      "fullName": "Priya Natarajan",
      "office": "Lakeline Realty Group",
      "city": "austin",
      "state": "TX",
      "zip": "78731",
      "volume": 118400000,
      "units": 142,
      "avgSoldPrice": 833802,
      "buyerVolume": 51200000,
      "buyerUnits": 61,
      "sellerVolume": 64700000,
      "sellerUnits": 78,
      "dualUnits": 3,
      "totalOriginatorsWorkedWith": 48,
      "totalLendersWorkedWith": 31,
      "phone": "5125550198",
      "email": "priya@example.com",
      "licenseNumber": "0523468"
    }
  ],
  "total": 14293,
  "cursor": "WyJtbTp2MiIsMjk2OTAxNzYwLCJtbWFfNzMyOWM1NTZkNjc4MmIwZiJd"
}
  • buyerUnits is the number of buyers the agent represented, the deals where a mortgage introduction happens.
  • totalOriginatorsWorkedWith tells you how spread out their referrals are. { "lte": 1 } finds agents loyal to a single loan officer.
  • Each row costs one credit. Use the same body on /v1/agents/count first to size the list for free.

Make it yours

  • Buyer-side agents only: add "sideDominance": ["buyer"] next to flatFilters.
  • Financed deals: "percentUnitsMortgaged": { "gte": 80 } keeps agents whose buyers almost always use a mortgage.
  • Around an office: replace city with "near": [{ "lat": 30.27, "lon": -97.74, "radius": "15mi" }].
  • Agents you don’t work with yet: "losOnMyTeam": { "relationship": "doesNotWorkWith" } excludes anyone your company’s loan officers already finance.