InvestorLift Scraper: Real Prices, ARV, Contacts & All Photos
Pricing
$3.00 / 1,000 property extracteds
InvestorLift Scraper: Real Prices, ARV, Contacts & All Photos
Export off-market wholesale deals from InvestorLift. Each record gives you the full address, the genuine InvestorLift asking price (never marked up), ARV, beds, baths, sq ft, year built, lot size, seller phone and email, listing text, the main photo, and every other property photo.
Pricing
$3.00 / 1,000 property extracteds
Rating
0.0
(0)
Developer
Hasnain Nisar
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
InvestorLift Property Scraper — export wholesale & off-market real estate deals
The InvestorLift Property Scraper is an Apify actor that exports wholesale and off-market real estate deals from InvestorLift as clean, structured data — with no login, no API key, and no browser automation to set up. Each run returns one dataset row per property containing the address, the genuine InvestorLift asking price (never a marked-up number), the ARV estimate and gross margin, beds, baths, square footage, lot size, year built, property type, the full deal description, the main photo plus every other photo of the property and a photo count, the seller's phone number and email, and the listing's status and timestamps — 30 fields in total, every one of them about the property, documented one by one below. Choose Active mode to export every current listing (optionally narrowed by US state and property type) or Specific URLs or IDs mode to pull exactly the deals you name. Results download as JSON, CSV, Excel, XML, or HTML, or flow straight into Google Sheets, a CRM, Make, Zapier, or your own webhook. The dataset currently holds roughly 4,400 active deals nationwide and is refreshed daily.
Features
- Real InvestorLift prices — no markup. The
pricefield is the actual InvestorLift asking price, and the description text is kept in sync with it. No margin, no marked-up consumer price, no hidden uplift is ever emitted. - Bulk export of every active wholesale deal in a single run — thousands of off-market, distressed, and fix-and-flip properties, paginated automatically.
- Look up specific listings by full InvestorLift URL or by listing ID (mixed lists are fine).
- Every photo, split ready to use —
property_imageis the main photo,other_imagesis every other photo of that property, andimagesis the whole set with the main one first (galleries run from 1 to 360+ photos), alongside animages_count. The arrays are nevernull, so a property card and a detail-page carousel are both a one-liner. When a listing has only its main photo,other_images_availableisfalse— no guessing at an empty array. - Property data only. Every field describes the house or the listing. No operator-side bookkeeping ships with it — no outbound-email or campaign status, no ingest flags, no marked-up price.
- Seller contact details included —
phone_numberandemailon the record itself, no enrichment step needed. - Filter by US state (all 50 + DC) and by property type — Single-Family, Multi-Family, Condo/Townhome, Land, Commercial, Mobile/Manufactured.
- Deal math already attached —
arv_estimateandgross_marginsit next to the asking price so you can triage a list in seconds. - Clean, typed output — numbers come back as numbers (not strings), field order is stable, and every field is documented below.
- No InvestorLift account, credentials, or API key required. The data source is wired up on the backend; you only pick a mode and optional filters.
- Schedule it. Run daily on the Apify scheduler for a continuous deal feed.
Why the real price matters
Most resold "wholesale deal" feeds quietly add a margin to the asking price, so the number in your spreadsheet does not match the number on the listing. This actor deliberately publishes the real InvestorLift asking price in the price field, and re-synchronises any price figure inside the description text to that same number. What you underwrite is what the deal actually asks.
Input
Everything is configured through a simple form — there are no credentials to supply.
| Field | Type | Default | Description |
|---|---|---|---|
mode | select (required) | active | active — return every current listing in the database. urls — return only the listings you name in propertyUrls. |
propertyUrls | array of strings | [] | URLs mode only. Full InvestorLift listing URLs (e.g. https://investorlift.com/marketplace/p/317344) and/or listing IDs, one per line. Mixed lists are supported; both /p/ and /deal/ URL forms are matched. |
states | multi-select | [] | One or more US states (two-letter codes, all 50 states + DC). Empty = every state. |
propertyTypes | multi-select | [] | One or more of Single-Family, Multi-Family, Condo/Townhome, Land, Commercial, Mobile/Manufactured. Empty = every type. |
states and propertyTypes apply in Active mode. In URLs mode the listed URLs/IDs decide the result set.
Example input
{"mode": "active","states": ["TX", "FL"],"propertyTypes": ["Single-Family"]}
{"mode": "urls","propertyUrls": ["https://investorlift.com/marketplace/p/317344","https://investorlift.com/marketplace/deal/8936967","317344"]}
How to export InvestorLift deals, step by step
- Open the InvestorLift Property Scraper on Apify and click Try for free.
- Pick a Mode —
Active — current listingsfor a full export or daily feed,Specific URLs or IDsto fetch named deals. - (Active mode, optional) Choose one or more States and/or Property types to narrow the export.
- (URLs mode) Paste your listing URLs and/or IDs, one per line.
- Click Start and let the run finish.
- Open the Dataset tab and export to JSON, CSV, Excel, XML, or HTML — or send it onward with an integration or webhook.
Output — every field you get
The actor emits one dataset item per property, always in the field order below.
Notes that apply to the whole table:
- Any field can be
nullwhen InvestorLift did not publish that detail for a given deal. - Numeric columns are returned as real JSON numbers (already parsed), so sorting and spreadsheet formulas work out of the box.
- No marked-up price and no margin field is ever emitted —
priceis the real InvestorLift asking price. Full stop.
| Field | Type | Description |
|---|---|---|
id | integer | Unique record ID for the property. Stable across runs — use it as your primary key when de-duplicating or upserting into a CRM or database. Results are returned ordered by id ascending. |
property_url | string (URL) | Direct link to the listing on InvestorLift, e.g. https://investorlift.com/marketplace/p/317344. Also the value you can paste back into propertyUrls to re-pull a single deal. |
title | string | Listing title / headline as published on InvestorLift. |
state | string | Two-letter US state code, e.g. TX. This is the field the states input filters on. |
city | string | City the property is in. |
county | string | County the property is in — useful for county-level records pulls and tax research. |
zip | string | ZIP code. Kept as a string so leading zeros (e.g. 07032) survive a CSV export. |
public_address | string | The property address as published on the public listing. |
full_address | string | The complete address on one line, including city, state and ZIP — the convenient field for geocoding, mail merges, and skip tracing. |
property_type | string | One of Single-Family, Multi-Family, Condo/Townhome, Land, Commercial, Mobile/Manufactured. This is the field the propertyTypes input filters on. |
bedrooms | number | Number of bedrooms. |
bathrooms | number | Number of bathrooms — can be fractional (e.g. 2.5). |
year_built | integer | Year the property was built. |
sq_footage | number | Living area square footage. |
lot_size | number | Lot size as published on the listing. |
price | number | The real InvestorLift asking price for the deal — the same figure a buyer sees on the listing. null (never 0) when the listing has no published price. |
arv_estimate | number | After-Repair Value estimate — what the property is estimated to be worth once renovations are complete. |
gross_margin | number | Estimated gross margin on the deal, published alongside the asking price and ARV for quick triage. |
description | string | The full deal description, cleaned up for machine use. Any asking/list/sale price figure inside the text is re-synced to the real price above, so the prose and the number always agree. ARV and repair estimates inside the text are left exactly as InvestorLift published them. |
property_image | string (URL) | The main photo. Present on essentially every property. Typically hosted at https://s3.us-east-2.amazonaws.com/sendlift/property-images/<id>.jpg; some are re-hosted on Supabase storage. Always also the first element of images. |
other_images | array of strings (URLs) | Every other photo of the property — the whole gallery except the main photo, in listing order. An empty array [] (never null) when the property only has the one photo. Use this when you already render property_image as the cover and want the rest for a carousel or detail page. |
other_images_available | boolean | Whether the listing has any photo beyond the main one. false means no other images are available for this property — it is a one-photo listing, which is normal and common on InvestorLift. Saves you having to interpret an empty other_images array. |
images | array of strings (URLs) | Every photo of the property, main photo first, then the others. Galleries range from 1 to 360+ photos; a genuine one-photo listing is normal and common. Always an array — never null. The three photo fields always satisfy images == [property_image] + other_images, so pick whichever shape suits you. |
images_count | integer | Total number of photos in images — handy for filtering to well-photographed deals (images_count >= 10) without unpacking the array. 1 for a single-photo listing, 0 only in the rare case where the property has no photo at all. |
phone_number | string | Seller / listing contact phone number, when published on the deal. |
email | string | Seller / listing contact email address, when published on the deal. |
status | string | Status label recorded for the listing in the source dataset. |
available | boolean | true while the deal is still marked as available, false once it is not. The quickest field to filter a dataset down to live deals. |
status_changed_at | string (ISO 8601 timestamp) | When the listing's status last changed. |
unavailable_at | string (ISO 8601 timestamp) | When the listing was first recorded as no longer available. null while the deal is still available. |
created_at | string (ISO 8601 timestamp) | When the property record was first added to the dataset — use it to pick up only deals that are new since your last run. |
Fields you will never see. Every column above describes the property or the listing. Excluded on purpose:
- Outbound-email / campaign bookkeeping — whether and when the operator's own deal alert went out for a row (previously surfaced as
email_send_date). That tracks a mailing schedule, not a house, and it is stripped from every item before it is pushed. - The marked-up consumer price and the profit margin used by the operator's own marketplace.
priceis the real InvestorLift asking price. Full stop. - Internal ingest bookkeeping — sanitiser flags, pre-cleanup copies of fields, and AI-refinement markers.
phone_number and email are not in that group: they are the seller's own published contact details for the deal.
Example output
One dataset item, exactly as it is returned:
{"id": 3187,"property_url": "https://investorlift.com/marketplace/p/8936967","title": "3 Bed / 2 Bath Fixer — Houston, TX (Below Market)","state": "TX","city": "Houston","county": "Harris","zip": "77026","public_address": "4218 Bennington St","full_address": "4218 Bennington St, Houston, TX 77026","property_type": "Single-Family","bedrooms": 3,"bathrooms": 2,"year_built": 1958,"sq_footage": 1284,"lot_size": 6250,"price": 189000,"arv_estimate": 285000,"gross_margin": 96000,"description": "Off-market fix-and-flip opportunity in northeast Houston. Solid brick ranch on a 6,250 sq ft lot, tenant-free and vacant. Roof replaced in 2019, foundation reported level. Estimated repairs $45,000 for a full cosmetic rehab; ARV of comparable renovated homes on the block is $285,000. The asking price is $189,000. Cash or hard money only, 7-day close preferred, EMD $5,000 non-refundable.","property_image": "https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936967.jpg","other_images": ["https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936968.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936969.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936970.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936971.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936972.jpg"],"other_images_available": true,"images": ["https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936967.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936968.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936969.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936970.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936971.jpg","https://s3.us-east-2.amazonaws.com/sendlift/property-images/8936972.jpg"],"images_count": 6,"phone_number": "+1 713-555-0142","email": "acquisitions@example-wholesaler.com","status": "active","available": true,"status_changed_at": "2026-07-19T14:02:11.000Z","unavailable_at": null,"created_at": "2026-07-18T06:31:47.000Z"}
A property that only has one photo looks the same, except:
{"property_image": "https://s3.us-east-2.amazonaws.com/sendlift/property-images/8931204.jpg","other_images": [],"other_images_available": false,"images": ["https://s3.us-east-2.amazonaws.com/sendlift/property-images/8931204.jpg"],"images_count": 1}
other_images_available: false is the actor telling you plainly that no other
images are available for that property — there is nothing missing to go and
look for. other_images and images are always arrays, so you can iterate them
without a null check on every row.
Use cases
- Fix-and-flip lead generation — build a ready-to-call list of discounted, distressed, and off-market properties with the seller's phone and email already attached.
- Wholesale deal sourcing on autopilot — schedule a daily run, filter on
created_atfor new records, and feed your acquisitions pipeline without opening a browser. - Underwriting at real prices —
price,arv_estimate, andgross_marginin one row means you can rank thousands of deals by spread before you ever pick up the phone. - Geographic farming — export only the states (and property types) you actually buy in.
- CRM and database enrichment — paste a list of listing URLs or IDs in URLs mode and pull the full record, photos included, for each one.
- Listing sites, apps, and marketplaces —
property_imageis the cover for a property card,other_imagesfills the detail-page carousel, andimages_countlets you sort the best-photographed deals to the top. - Direct mail, cold SMS, and skip tracing — push
full_address,phone_number, andemailinto your outreach stack. - Market research and BI dashboards — pipe the dataset into Google Sheets, BigQuery, or a BI tool and track pricing, spreads, and inventory by county over time.
- AI agents and RAG — feed the structured rows plus
descriptiontext into an LLM workflow for deal summarisation, screening, or a chat-with-your-deals assistant.
Integrations
Anything that talks to an Apify dataset works with this actor:
- Downloads — JSON, JSONL, CSV, Excel (XLSX), XML, HTML, and RSS straight from the run's Dataset tab.
- Apify API + clients — pull results programmatically with the REST API or the official Python and JavaScript clients.
- Google Sheets / Google Drive — deliver each run's results to a spreadsheet.
- Make and Zapier — trigger multi-step automations (CRM create, SMS, email, Slack alert) on every new deal.
- Slack, email, and webhooks — get notified, or POST results to your own endpoint the moment a run succeeds.
- Scheduler — run hourly, daily, or weekly for a continuously refreshed feed.
- AI / LLM tooling — Apify actors integrate with LangChain, LlamaIndex, and MCP-compatible agents.
FAQ
Is the price field the real InvestorLift asking price?
Yes. price is the genuine InvestorLift asking price — the number a buyer sees on the listing. No margin or markup is added anywhere in this actor, and the price figures inside description are re-synced to that same number so the text and the field never disagree.
Do I need an InvestorLift account, login, or API key?
No. There is nothing to authenticate. The data source is configured on the backend, so you only choose a mode and optional filters. It is the simplest alternative to an InvestorLift API.
What photos do I get for each property?
All of them, split so you can use them straight away. property_image is the main photo. other_images is every other photo of that property, in listing order. images is the whole set with the main photo first, and images_count is how many there are. The three always line up as images == [property_image] + other_images, so render property_image as the cover and loop other_images for the carousel — or just iterate images. Galleries run from 1 to 360+ photos.
Why does a property have only one photo?
Because that is all the seller posted — a one-photo listing is completely normal on InvestorLift and common in the data. In that case other_images_available is false, other_images is [], and images_count is 1. The photo arrays are never null, so you can iterate them without a null check on every row.
How many results can I get, and how fast?
Active mode returns the full set of current listings in one run — currently around 4,400 properties nationwide — paginated automatically. Adding states or propertyTypes narrows that. URLs mode returns exactly the records matching the URLs/IDs you supply.
How much does it cost?
Pay per result: $2.00 per 1,000 properties ($0.002 each), with a free trial so you can test it before committing. You are only charged for items actually delivered to the dataset.
Can I export to CSV, Excel, or Google Sheets?
Yes. Every run's dataset exports to JSON, CSV, Excel, XML, HTML, and RSS, and connects to Google Sheets, Make, Zapier, Slack, and custom webhooks for automated delivery.
Does each deal include the seller's contact information?
Yes — phone_number and email are on the record itself whenever the listing publishes them. No separate enrichment step or credits are needed.
What is ARV, and how do I judge a deal quickly?
ARV is the After-Repair Value: the estimated value of the property once renovations are finished. Each record ships arv_estimate and gross_margin next to the real price, so you can sort a whole export by spread and shortlist in seconds.
Can I filter InvestorLift properties by state or property type?
Yes. In Active mode, pick one or more states from the states dropdown and/or one or more propertyTypes (Single-Family, Multi-Family, Condo/Townhome, Land, Commercial, Mobile/Manufactured). Leaving both empty returns every state and every type.
How do I pull one specific listing?
Set Mode to Specific URLs or IDs and paste the listing URL (either the /p/ or the /deal/ form) or just its listing ID, one per line. Mixed lists of URLs and IDs work fine.
How do I get only new deals since my last run?
Schedule the actor and filter on created_at (when the record first appeared) or on available / status_changed_at to track deals going off-market. id is stable, so it is a safe key for upserts and de-duplication.
Support
Found a problem, need an extra field, or want a custom real estate data feed? Open the Issues tab on the actor page — custom scraping, enrichment, and delivery solutions are available on request.
Legal and disclaimer
This actor returns publicly available real estate listing information for legitimate investor research, underwriting, and lead generation. It is not affiliated with, endorsed by, or sponsored by InvestorLift; all trademarks belong to their respective owners. Property data, prices, ARV figures, and contact details are provided as published by the source and are supplied as is, without any warranty of accuracy, completeness, availability, or fitness for a particular purpose — always verify a deal independently before transacting. You are responsible for using the data in compliance with applicable law and the source platform's terms, including contact and marketing regulations such as TCPA, CAN-SPAM, GDPR, and CCPA, and for handling any personal data (phone numbers, email addresses) lawfully. Nothing here is financial, investment, or legal advice.