How-to · 3 steps

How to find a real estate agent
with Monid.

Give this to your agent
$set up https://monid.ai/SKILL.md, then find me agents in <market> and show the cost of each step

and let it take it from there.

›find me agents in this market
#JobWhat came backCost
1Agents here24,574 found, 15 a page
2Teams and peoplemixed on every page
3Page 9,999clamped to 25, billed in full
4The label changesteam sales, or just sales
5Second provider48 names, no numbers
6They disagree2.4% here, 24.6% elsewhere
7One profile15,643 lifetime, 5 shown
8The listingsdays on market, nested in the row
9The third providerblocked four times, free
10Total27 runs
one metro · 24,574 agents · 375 of them reachableagent running$0.3200

Real run, 2026-09-26. No personal details reproduced.

Step 1

Set up Monid.

One line. It installs the CLI and asks for an API key from app.monid.ai. New accounts start with $1.00.

Say this to your agent
>set up https://monid.ai/SKILL.md
Step 2

Pick what you need. Say it in one sentence.

Click a job. Paste the sentence, fill in the brackets.

Find the agents in a market

Say this to your agent
>search agents in <market> with zillow on monid and give me the twelve-month sale count for each. teams and individuals are mixed on every page, so separate them by the TEAM tag on each card rather than by the label under the number: the label has four different wordings including a singular one and a no-sales one, and a parser keyed to a single string silently drops rows
What the agent runsdone
zillow /search_agents$0.01
homes.com /search_agents$0.02
loopnet /search_brokersblocked
What came backone US metro · 2026-09-26
Who is on each pagecards of fifteen
market A page one · teams11 of 15
market A page two · teams7 of 15
market B page one · teams13 of 15
market B page two · teams2 of 15
the pages are mixed, not splitan earlier version of this page said page one is all teams and individuals start on page two. On two other markets page one ran 11 teams to 4 individuals and 13 to 2, and page two ran the other way. The split is per card, and you have to make it yourself on every page
and the numbers are team numbers on team cardsa card reading 2,413 sales in twelve months is a team's twelve months; read as one person's production it is wrong by the size of the team
the tag is the tell, not the labelevery card carries a TEAM tag, which agreed with the label on all seventy-five cards checked. The label is the worse of the two: it has four wordings, going singular at one sale and reading no sales last 12 months with a null value, so a regex on one string drops rows silently
and the ranges overlap almost completelya page-two team outsold thirteen of the fifteen page-one cards, so page position is not a proxy for size either
$0.0115 agents, with numbers

Is any of it a real ranking

Say this to your agent
>tell me which fields in this result are countable numbers and which are labels. i want the twelve-month sale count, the sales in this metro and the review count, not a badge
What the agent runsdone
zillow /search_agents$0.01
homes.com /search_agents$0.02
What came backone US metro · 2026-09-26
The same market, two providerswhat each returns
provider A · agents found24,574
provider B · agents found23,994
provider A · production fields3 per card
provider B · production fields0
one provider countseach card carries a labelled array with a twelve-month sale count, sales in this metro and a price range, plus a numeric review average and count
the other does notchecked across every key on its record, there is not one countable production figure; it is a directory of names and contact fields rather than a ranking
they do not agree on how many agents exist2.4% apart on the first market and 24.6% apart on a second, so quote which provider's count you used rather than treating either as the number
the top-agent flag is real but positionalit is commoner on page one than page two on both markets, six of fifteen against one of fifteen on the second, so it ranks rather than describes
the directory really is a directorythe second provider's agent rows carry seven keys, none of them countable, and its profile record is under half a kilobyte of contact details and two award badges. This one held on a second market
$0.01countable, or not

One agent's track record

Say this to your agent
>get the profile for <agent id> with zillow on monid. take the lifetime sales figure from the past-sales total field, which is a plain integer, then count the individual records it actually returned: it gives you five, whatever the lifetime figure says, and there is no page parameter to push it
What the agent runsdone
zillow /get_agent_profile$0.01
homes.com /get_agent_profileblocked
zillow /search_agents$0.01
What came backone US metro · 2026-09-26
Lifetime total against records returnedtransactions
a team's lifetime total15,643
an individual's lifetime total1,158
records it will show you, either way5
what you getthe sales statistics, past sales, reviews, licences, service areas and current listings, in a 62 to 68 KB response for a cent
the total is a field, not header textthe lifetime count is a clean integer on the past-sales object, so parse it rather than reading a sentence
the detail is capped at fivean earlier version of this page said a hundred sales and a hundred listings. It is FIVE of each, on a fifteen-thousand-sale team and a thousand-sale individual alike, which is three hundredths of one percent rather than the one percent this page claimed, and no page parameter exists to reach further
the second provider can be reachedits profile endpoint was blocked on both of the first attempts and answered on the next, which is exactly what the blocked-provider sentence on this page predicts
$0.0162 to 68 KB a profile

What is actually for sale here

Say this to your agent
>get the for-sale listings in <market> with zillow on monid with price, beds and days on market. the days figure is not a top-level field, it is nested inside each row's home-info object with a milliseconds version beside it, so look inside the row before you conclude it is missing
What the agent runsdone
zillow /search_homes_for_sale$0.05
zillow /search_recently_sold$0.05
homes.com /search_properties_for_sale$0.01
zillow /get_property_details$0.01
What came backone US metro · 2026-09-26
the spread on one page41 listings from $189,900 to $23,500,000, out of 5,599 in the market
days on market IS there, nestedan earlier version of this page said no row carries it. It is on every row, as an integer, inside the home-info object, with a milliseconds version beside it. Whoever wrote that sentence read only the top-level keys, and a reader who believed it buys a $0.05 endpoint for a number already in hand
the cheap second opinion is also a thinner onethe other provider's property search is a fifth of the price and its rows carry eight keys against this one's ninety-six, so it is cheaper and smaller rather than cheaper and equal
recently sold is the same price$0.05, and it is the only route here to what a market actually transacted rather than what it is asking
$0.0541 of 5,599

When the provider is blocked

Say this to your agent
>if a provider comes back with a site-protection 503, do not switch providers permanently. it billed nothing, it had already retried three times upstream, and the same endpoint may work again in ten minutes
What the agent runsdone
loopnet /search_brokersblocked
loopnet /search_listingsblocked
homes.com /get_agent_profileblocked
homes.com /search_agents$0.02
What came backone US metro · 2026-09-26
What each provider did on our runruns
worked every time14 runs
worked 3, blocked 58 runs
blocked every time4 runs
the payload is identical every timea 503 saying site protection is blocking all proxies, with three upstream attempts already made and a retry-after of sixty seconds
and it is freeall nine blocked calls billed $0.0000, so the failure costs the round trip and nothing else
it is intermittent, not structuralone endpoint returned 48 agents and billed $0.02 at one minute, then came back blocked twice ten minutes later
the block is per endpoint, not per providerone of that provider's endpoints answered first try while another was blocked in the same minute, so a single block is not a reason to drop the provider
what that means for a jobretry on a schedule rather than falling back permanently, and never report a provider as unavailable from a single attempt. Recovery took two to three attempts on both endpoints tested
$0.00nine blocked calls

An empty market and a wrong one

Say this to your agent
>if a market search comes back with a null location label, a null result count and an empty array, read it as one thing: the resolver did not recognise your location string. do NOT check whether the label matches what you asked for, because a real place the resolver cannot parse returns a null label too and that check would call it a typo
What the agent runsdone
zillow /search_agents$0.01
homes.com /search_agents$0.02
What came backone US metro · 2026-09-26
what an unresolved place returnsan empty agent array, a null result count and a null location label, cleanly and without an error, billed nothing
and a REAL place can return exactly thata genuine census-designated place in Hawaii came back with the same null triple as an invented name. So the guard an earlier version of this page recommended, asserting the label equals what you asked for, rejects a valid input as a typo
the premise under it could not be builtwe could not find a resolved location with no agents: a village of one person returned eleven, a town of four returned seventy-nine, a settlement of twelve returned sixteen, because the provider returns agents SERVING the area. So the null triple means the resolver failed, and nothing else
which makes it simpler, not hardera non-null label does mean the market resolved, so read the label as a resolution flag rather than as something to compare against your input
and it billed nothingthe empty result cost $0.0000, which is the aisle behaving correctly
$0.00the empty was free
Step 3

Take the cheapest route with Monid.

A cent gets you agents with real sale counts. The work is splitting teams from individuals on every page, and retrying the endpoint that was blocked rather than dropping the provider.

Who is here · $0.01
Search agents$0.0115, with sale counts
Check the TEAM tag$0.00team, or individual
Go deeper · cheapest first
One profile$0.01
Second source$0.02
For-sale listings$0.05
Recently sold$0.05
Team or person
Split on the tag$0.00
Total vs records$0.00a lifetime total against 10
Back to you
rowfound bycost
1One profile$0.02
2One profile$0.02
3no agents$0.01
4For-sale listings$0.07
5One profile$0.02
5 of 5 rows$0.14
Say this to your agent
>find the agents in each of these markets and tell me which figures are team totals: <paste markets>
“split on the tag, not the label”the tag agreed on all 75 cards while the label has four wordings, one of them a null-valued no-sales string
“look inside the row”days on market is nested in the home-info object, and reading only the top-level keys made this page call it missing
“retry a blocked provider”the same endpoint worked, then was blocked ten minutes later, and the block billed nothing
“read the null label as unresolved”a real Hawaiian place returned the same null triple as an invented one, so matching the label against your input rejects valid markets
“never size a loop from the total”the page number is silently clamped at 25, so only 375 of a market's agents are reachable and a loop past it re-buys the same page

One key. 1,700+ tools.

Three providers, and site protection blocks them per endpoint rather than per provider.

Agents, with real sale countszillow · $0.01 / call
One agent's whole profilezillow · $0.01 / call
What is for sale herezillow · $0.05 / call
What recently soldzillow · $0.05 / call
Forty-eight names a pagehomes.com · $0.02 / call
Properties, second sourcehomes.com · $0.01 / call
Commercial brokersloopnet · blocked on our run

+ 1,700 more across 55 providers

Browse the catalog →