All citiesSan FranciscoClevelandNew York CityWashington, D.C.CincinnatiLos AngelesOaklandSan Diego
Seattle and Austin coming October 1st.

Scan the Block / Guides

For a brokerage

Property records at brokerage scale

Fifty seats, a hundred reports a day, and two machine surfaces. What to automate, what to leave to a person, and how to keep the record defensible.

4 min read PDF

What changes at fifty seats

Enterprise is up to 100 reports a day across 50 accounts on one invoice, and at that size the constraint stops being the allowance and becomes method. Fifty people running reports ad hoc produces fifty private folders. The same fifty running them through a shared habit produces an institutional record of what the brokerage knew, and when.

Three surfaces, and what each is for

The app, for the person in front of a client

Interactive, forwardable, and the only surface with the assistant on it. This is where an agent works.

Claude over MCP, for the question that has not been designed for

Machine access mints a key per seat, off by default, which lets Claude run this account's reports under the same allowance and the same meter. It suits the open-ended question — look at these six addresses and tell me which have open permits — where writing a script would take longer than asking.

The REST API, for the thing you do every week

Documented and testable at scantheblock.com/docs, with an OpenAPI spec you can import into Postman or generate a client from. JSON natively, XML on request with format=xml for systems whose only door in is an XML parser. Use it for the recurring job: nightly runs over a watch list, enrichment into a CRM, a pre-listing check fired by a pipeline.

Everything above runs the same metered path as the buttons. A report is a report whether a person or a machine asked for it, and re-running an address the company already ran is free on every surface.

Patterns that work at this scale

Run the pipeline, not the property

The highest-value automation is not one address, it is the list you already maintain: active listings, pending deals, a farm territory. A nightly job over that list surfaces the open permit that appeared yesterday, and does it before a client asks.

Attach the report to the file at intake

Making a report part of taking a listing, rather than a thing an agent remembers to do, is what turns this from a tool into a record. It also means the PDF exists at the moment somebody later wishes it did.

Watch the allowance by the day, not the month

A daily ceiling behaves differently from a monthly pool: a heavy Tuesday costs nothing on Wednesday. Nobody needs to ration, and nobody needs to ask permission — the desk simply cannot overspend the month in a week.

Use labels as the join key

Labels are free text and they are the cheapest way to tie a report to a deal, a client or a territory. The history exports as CSV or JSON, so a labeled history reconciles against your own systems without an integration.

Keeping the record defensible

At brokerage scale the value of the audit trail eventually exceeds the value of any single report. Three things make it hold up:

Reports are not consumer reports and may not be used to screen tenants or make decisions about individuals. At fifty seats this is worth stating in your own onboarding, because the one person who does not know is the risk.

The machinery, briefly

Keys

A key is a seat with the powers stripped: never a super admin, never the plan's admin, and re-checked against the seat, the company and the plan at every use — so removing somebody revokes their key with them. Keys are shown once and stored only as a hash; losing one means switching the toggle off and on, which mints a fresh one and kills the old.

Rate limits

Six report runs a minute per key, one at a time, a hundred a day. Over the limit returns 429 with a Retry-After header — honor it rather than retrying immediately.

What to cache on your side

Nothing, mostly. Re-running an address the company already ran is free and returns the current record, so a cache of your own mainly risks serving a stale permit. The exception is a display you refresh constantly, where holding the payload for a few minutes is polite.

Failure behavior

A report is assembled from many public sources and any one of them can be slow. Rather than fail, the report names which sources were unreachable while it ran — so a thin section is visibly a gap rather than silently an absence. Check that field before treating an empty section as an empty record.

Getting people on the plan

All 50 accounts use the brokerage's own email domain — a shared plan is one company, and the domain is what makes it one company rather than several people splitting an invoice. Send the list to hello@scantheblock.com and we will set them up; there is no password to distribute, because sign-in is a link sent to the address.

Read the record on an actual address

Everything described here comes out of one report on one San Francisco address — the Assessor's file, permits and violations, zoning, hazards, rent control, and ten years of the surrounding blocks, every count compared with the city and none of it scored.

Search an address See plans

Written for the same reader

Also here

Next guide Insuring a San Francisco building, from the public record

Last reviewed August 21, 2026. Every rule described here is San Francisco's, not ours, and the city changes them — where a date or a threshold matters to a deal, confirm it against the city. This is general information about public records and not legal, tax or investment advice. Questions, corrections and arguments: hello@scantheblock.com.