api.investorlift.com is JSON, paged with a cursor. A spreadsheet is a loop over those pages. Ask for
the largest page your plan allows. Write the rows. Follow page.next_cursor until it is null. This request gets every
flip and wholesale deal bought since August 2024 within two miles of a house in Scottsdale, newest first:
What to know
- The page size is your plan’s. The API lowers a
limitabove the plan’s largest to that largest. It does not refuse it.page.limitsays what the API used. Plans and limits has the number per plan. - Every new deal is a credit. Each deal the export gets for the first time costs one credit. A deal your account
already holds costs nothing again while the plan has credit.
X-Rowsis the size of the body, not a charge, andX-Credits-Chargedis what the page cost. Narrow the geometry and the filters before you page. Two years of flips and wholesale deals within two miles is hundreds of rows, and the whole market is hundreds of thousands (Plans and limits). - A data refresh invalidates the cursor. A
400 invalid_cursorin the middle of a long export means a refresh rebuilt the tables. Start again from page 1, and keepmeta.coverage[].dataset_versionbeside the file so you know which build it came from (Pagination). - A null price is an answer.
bought_priceandsold_pricearenullwhen the deed carries none. This is common on Texas off-market deeds. Write the null. Do not turn it into a zero. - Names are entities.
investor.nameis the LLC or trust. A buyer with no investor id (usually a household) has a null name. The API does not serve the people behind an entity on this host (Authentication).
Partners and staff
Staff and contracted partners reach the internal host on the company network with agm_ key. On that host, nine
endpoints also answer Accept: text/csv. They stream the whole filtered set as a file and ignore pagination. The nine
are /v1/deals, /v1/investors, /v1/investors/{id}/deals, /v1/buyers/match, /v1/wholesale-listings,
/v1/investors/{id}/wholesale-purchases, /v1/wholesalers/{id}/listings, /v1/str-parcels and
/v1/lenders/{id}/loans.
The cap is 50,000 rows. Above it, the API answers 422 csv_cap_exceeded
with the cap in the body and the X-Row-Cap header. The API ignores limit and cursor, and the set streams in the
sort you asked for. CSV has its own budget of 12 exports a minute per key, one at a time
(Rate limits). The contact columns appear on a contact-scope key only. On a
deals-only key the owner columns are absent, and the Investor cell is blank for a buyer with no investor id.
If you ask any endpoint outside the nine for CSV, the API answers 406 not_acceptable.
On api.investorlift.com one route has a CSV representation.
GET /v1/lenders/{id}/loans answers Accept: text/csv from Growth. It
requires a recorded_from window, keeps the same 50,000-row cap, costs 0 credits and leaves the borrowers column out.
On every other /v1 call the gateway asks the API for JSON.