The agent's financed deals and loan volume, over time
Scoped to the agent's FINANCED deals: recorded loans on which the agent is the buyer's agent or the listing / co-listing agent, matched through the agent's ids. Cash deals carry no loan and are not counted. The date window is the loan's recording date. One bucket per interval (default monthly): units = financed deals recorded in the bucket, volume = their total loan amount (out-of-range fill amounts excluded and counted in excluded). previous is the same series for the prior window. side defaults to any; buyer + listing = any per bucket. Pair with agentAnalyticsTimeSeries (closed sales by sale date) for a mortgaged-vs-total chart — the two use different date axes (loan recording vs sale close), so a deal can land a month apart.
In: header
Path Parameters
Agent document ID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/agents/string/analytics/mortgaged-time-series" \ -H "Content-Type: application/json" \ -d '{}'{
"completeness": {
"through": "2019-08-24"
},
"current": [
{
"complete": true,
"date": "string",
"excluded": 0,
"measureValue": 0,
"segments": [
{
"id": "string",
"label": "string",
"measureValue": 0,
"units": 0,
"volume": 0
}
],
"units": 0,
"volume": 0
}
],
"measure": "string",
"previous": [
{
"complete": true,
"date": "string",
"excluded": 0,
"measureValue": 0,
"segments": [
{
"id": "string",
"label": "string",
"measureValue": 0,
"units": 0,
"volume": 0
}
],
"units": 0,
"volume": 0
}
]
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string",
"limit": 0,
"size": 0
}The ZIP markets this agent works, blended POST
Rank the ZIP markets one real-estate agent works, with volume, transaction counts and mean sale price per market, plus a weighted summary across the whole footprint. Optionally narrow to a ZIP list or a date window. REACH, NOT MARKET SHARE: an agent belongs to every market they touch — where their office is AND everywhere they have transacted — so one agent is counted in several markets at once. Per-market agent counts therefore over-sum: they cannot be added together, and dividing one into a total does not produce a market share. The only percentage returned, `shareOfScope`, is each market's share of this agent's volume across the scope requested and sums to 100 over that scope; there is no share-of-whole-book figure, because the transaction records carry no per-agent total to divide by. TWO COUNTS, ON PURPOSE: `transactions` counts transaction records; `units` counts the ones carrying a price, which are the records behind `volume` and `avgSalePrice`. Roughly half of an agent's records are priced, so dividing volume by `transactions` understates the average by about 2×. Figures are computed live from the agent's transaction records — an agent record carries no stored market rollup — and are ranked across their busiest ZIP markets. When a ZIP scope returns no markets, `reach.presentInScope` distinguishes 'works there, nothing closed in the window' from 'not present at all'. The summary also carries a Community Lending mix: what kind of neighborhood these markets are, weighted by the agent's activity in each. These are U.S. Census tract-level aggregates describing whole neighborhoods — never an individual, household or client attribute — and on this surface the basis is always the markets in scope, since an agent record carries no stored neighborhood rollup.
Listing offices the agent has closed through POST
Ranks the agent's CLOSED sales (status sold, a real sale price — rentals and lease listings excluded, duplicate records of one sale counted once) by this dimension. The same population `POST /v1/agents/{id}/sales` returns with `flatFilters.mlsStatus: "SLD"` and the agent analytics routes count. `side` narrows to the deals the agent was on that side of (`buyer` includes deals on both sides; `buyer` + `listing` = `any`).