# BiggerPockets Scraper — Forum Threads, Posts & Investor Leads (`haketa/biggerpockets-scraper`) Actor

Scrape BiggerPockets real-estate investing forums: thread titles, full posts with authors, reply counts, and member profiles (name, investor type, location) for lead generation. Paste forum URLs, thread URLs and/or usernames.

- **URL**: https://apify.com/haketa/biggerpockets-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Social media, Real estate
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## BiggerPockets Scraper — Forum Threads, Posts & Investor Leads

> **Extract structured data from BiggerPockets, the largest real-estate investing community: forum threads and full discussions (original post + every reply with authors), reply/upvote/view counts, and member profiles with investor type and location for lead generation.** Paste forum URLs, thread URLs and/or usernames and get clean JSON/CSV/Excel in seconds. Built for real-estate marketers, investors, analysts and researchers.

[![Forums](https://img.shields.io/badge/Forum-Threads%20%2B%20Posts-1f6feb)]()
[![Leads](https://img.shields.io/badge/Member-Investor%20Leads-2da44e)]()
[![Real Estate](https://img.shields.io/badge/Niche-Real%20Estate%20Investing-8250df)]()
[![Export](https://img.shields.io/badge/Export-JSON%20%2F%20CSV%20%2F%20Excel-fb8500)]()

***

### What This Actor Does

**BiggerPockets** is the biggest online community for real-estate investors — millions of forum posts on rentals, flipping, financing, landlording, syndication and deal analysis, plus a huge directory of investor members. This Actor turns that public activity into structured data. Three record types, mix and match in a single run:

| Record `type` | You provide | You get |
|---|---|---|
| **`forum-thread`** | A forum or category URL | Thread list: title, category, reply count, URL (paginated) |
| **`thread`** | A thread URL (or forum + *Include full posts*) | Full discussion: title, author, original post, **every reply with author & date**, post count, upvotes, views, location, dates |
| **`user`** | A member username | Member profile: name, **investor type** (Investor / Agent / Lender / …), **location**, join date, avatar, profile URL |

Everything is public data you can see on biggerpockets.com — this Actor just collects it into rows you can analyze.

***

### Why Use This

- **Real-estate investor leads.** Every thread author and member profile carries a name, an investor type and a location — a targeted B2B lead source for agents, lenders, wholesalers, property managers, SaaS and service providers in the real-estate space.
- **The full conversation, structured.** Not just thread titles — the original post and every reply, with the author of each, ready for analysis or summarization.
- **Market & sentiment research.** See what investors are actually asking and debating right now — deal metrics, market fears, strategies, tools — across any forum category.
- **Fast and cheap.** Pure-HTTP with a browser-grade fingerprint. No headless browser, so it stays quick and inexpensive even across thousands of threads.

***

### Quick Start

#### Run it in the console (no code)

1. Open the Actor in Apify Console.
2. **Forums:** paste a forum/category URL (e.g. `https://www.biggerpockets.com/forums/311-buying-selling-real-estate`).
3. Toggle **Include full thread posts** to fetch each thread's full discussion.
4. **Members:** optionally add usernames (e.g. `alex1333`) for member lead data.
5. Click **Start**, then export as **JSON, CSV, Excel or HTML**, or push to Google Sheets, a webhook or a database.

#### Run it via API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "forumUrls": ["https://www.biggerpockets.com/forums/311-buying-selling-real-estate"],
    "includePosts": True,
    "maxThreadsPerForum": 200,
}

run = client.actor("YOUR_USERNAME/biggerpockets-scraper").call(run_input=run_input)

for rec in client.dataset(run["defaultDatasetId"]).iterate_items():
    if rec["type"] == "thread":
        print(rec["title"], "·", rec["author"], "·", rec["commentCount"], "posts")
```

#### Build an investor lead list (Python)

```python
run = client.actor("YOUR_USERNAME/biggerpockets-scraper").call(run_input={
    "forumUrls": ["https://www.biggerpockets.com/forums/311-buying-selling-real-estate"],
    "includePosts": True,
    "maxThreadsPerForum": 300,
})

## Collect unique authors from thread posts, then enrich as members
authors = set()
for r in client.dataset(run["defaultDatasetId"]).iterate_items():
    if r["type"] == "thread":
        if r.get("authorUsername"): authors.add(r["authorUsername"])
        for p in r.get("posts", []):
            if p.get("authorUsername"): authors.add(p["authorUsername"])

leads = client.actor("YOUR_USERNAME/biggerpockets-scraper").call(run_input={
    "usernames": list(authors)[:500],
})
for lead in client.dataset(leads["defaultDatasetId"]).iterate_items():
    if lead["type"] == "user":
        print(lead["name"], "|", lead["investorType"], "|", lead["location"])
```

#### Pull a single thread's discussion (Node.js)

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('YOUR_USERNAME/biggerpockets-scraper').call({
    threadUrls: ['https://www.biggerpockets.com/forums/311/topics/1280356-determining-what-is-a-good-deal-on-a-long-term-rental'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const thread = items.find(r => r.type === 'thread');
console.log(thread.title, 'by', thread.author);
thread.posts.forEach(p => console.log('  ', p.author, '—', p.text.slice(0, 80)));
```

***

### Input Parameters

| Field | Type | Description |
|---|---|---|
| `forumUrls` | array | BiggerPockets forum/category URLs. Lists threads across pages. |
| `threadUrls` | array | Direct thread URLs. Each returns the full discussion with all posts. |
| `usernames` | array | Member usernames or profile URLs. Each returns member lead data. |
| `includePosts` | boolean | For forum threads, fetch each thread's full posts. Default `false`. |
| `maxThreadsPerForum` | integer | Cap on threads collected per forum URL. Default `100`. |
| `maxItems` | integer | Optional hard cap on total records. `0` = no limit. |
| `proxyConfiguration` | object | Apify Proxy. Datacenter is enough and enabled by default. |

Provide **forums, threads, members — or any combination — in one run.**

***

### Output

#### `type: "forum-thread"` (list view)

```json
{
  "type": "forum-thread",
  "topicId": "1300339",
  "catId": "311",
  "url": "https://www.biggerpockets.com/forums/311/topics/1300339-incredible-deal-opportunity",
  "title": "Incredible deal opportunity, nervous because it's over my budget",
  "category": "Buying & Selling Real Estate",
  "replies": 19
}
```

#### `type: "thread"` (full discussion)

```json
{
  "type": "thread",
  "topicId": "1280356",
  "title": "Determining what is a good deal on a long term rental",
  "author": "Benjamin Orsak",
  "authorUsername": "benjamino97",
  "body": "What metrics do you look for when determining whether a long term rental…",
  "location": "Houston, Texas",
  "commentCount": 6,
  "upvotes": 0,
  "views": 43,
  "datePublished": "2026-09-23T06:59:30-07:00",
  "posts": [
    { "author": "Bo Smith", "authorUsername": "bos40", "text": "The 1% rule is dead right now…", "date": "2026-09-23T08:12:00-07:00", "upvotes": 3 }
  ]
}
```

#### `type: "user"` (member lead)

```json
{
  "type": "user",
  "username": "alex1333",
  "userId": "2187910",
  "name": "Alex S.",
  "investorType": "Investor",
  "location": "Washington, US",
  "memberSince": "2021-07-01T19:06:20-07:00",
  "avatar": "https://bpimg.biggerpockets.com/…/avatar.jpg",
  "profileUrl": "https://www.biggerpockets.com/users/alex1333"
}
```

***

### Use Cases

#### 1. Real-estate investor lead generation

Every thread author and member profile is a potential lead with a name, investor type and location. Build targeted lists of investors, agents, lenders and wholesalers by forum topic or geography for B2B outreach and marketing.

#### 2. Market & sentiment research

Track what investors are asking and debating — deal metrics, market conditions, financing, landlording pain points — across any category. Quantify themes and sentiment over time by scheduling daily runs.

#### 3. Content, SEO & LLM training data

Thousands of expert Q\&A discussions on real-estate investing make a rich corpus for content research, SEO gap analysis, or fine-tuning and RAG for real-estate AI assistants.

#### 4. Competitive & product intelligence

See which tools, lenders and services investors recommend or complain about — product feedback and competitive signal straight from your target market.

#### 5. Community & influencer discovery

Find the most active, most-upvoted members in your niche — the voices worth partnering with for real-estate marketing and PR.

#### 6. Deal & trend monitoring

Monitor threads mentioning specific markets, strategies or price points to spot emerging trends and opportunities early.

***

### Tips

- **Forum URLs:** open any forum on biggerpockets.com and copy the URL. Category pages like `/forums/311-buying-selling-real-estate` work great; `/forums` lists recent activity across all categories.
- **`includePosts`** turns a fast thread list into full discussions — enable it when you need the actual posts and authors.
- **Lead workflow:** run forums with `includePosts` to gather authors, then feed those usernames back in to enrich them into member leads.
- **Schedule it** with Apify Schedules to keep a fresh feed of threads and leads.

***

### Frequently Asked Questions

**Do I need a BiggerPockets account?**
No. The Actor reads publicly visible data — no login required.

**Can I get the full text of every reply?**
Yes — with `includePosts` (for forums) or by passing thread URLs directly, each thread returns the original post plus every reply with its author.

**What investor types are captured?**
Whatever the member lists on their public profile — e.g. Investor, Real Estate Agent, Lender, Wholesaler, Contractor.

**What export formats are supported?**
JSON, CSV, Excel, HTML, or via API — plus Google Sheets, webhooks, Make and Zapier.

**Can I scrape many forums and members at once?**
Yes. Provide arrays of forum URLs, thread URLs and usernames; the Actor processes them all in one run and dedups results.

***

### Legal & Responsible Use

This Actor collects only publicly available information for research, analytics and business use. You are responsible for how you use the data. Please:

- Respect BiggerPockets' Terms of Service and robots directives.
- Comply with applicable data-protection laws (GDPR/CCPA) when handling member data.
- Do not use the data for spam, harassment, or any unlawful purpose.
- Use reasonable request volumes and scheduling.

This project is an independent tool and is not affiliated with, endorsed by, or sponsored by BiggerPockets.

# Actor input Schema

## `forumUrls` (type: `array`):

BiggerPockets forum or category URLs (e.g. https://www.biggerpockets.com/forums or https://www.biggerpockets.com/forums/311-buying-selling-real-estate). Lists threads across pages.

## `threadUrls` (type: `array`):

Direct BiggerPockets thread URLs (e.g. https://www.biggerpockets.com/forums/311/topics/1280356-...). Each returns the full thread: original post + every reply with authors.

## `usernames` (type: `array`):

BiggerPockets usernames (e.g. alex1333) or profile URLs. Each returns the member's profile: name, investor type and location (lead data).

## `includePosts` (type: `boolean`):

For each thread found in a forum, fetch the full thread (original post + all replies with authors). Slower but much richer.

## `maxThreadsPerForum` (type: `integer`):

Maximum number of threads to collect per forum URL (paginates as needed).

## `maxItems` (type: `integer`):

Optional hard cap on total records across all inputs. 0 = no limit.

## `proxyConfiguration` (type: `object`):

Apify Proxy. Datacenter is enough for BiggerPockets and is enabled by default; add residential only if you hit rate limits.

## Actor input object example

```json
{
  "forumUrls": [
    "https://www.biggerpockets.com/forums/311-buying-selling-real-estate"
  ],
  "usernames": [
    "alex1333"
  ],
  "includePosts": true,
  "maxThreadsPerForum": 8,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `type` (type: `string`):

forum-thread | thread | user

## `title` (type: `string`):

Thread title

## `category` (type: `string`):

Forum category

## `url` (type: `string`):

Thread URL

## `topicId` (type: `string`):

Thread/topic ID

## `catId` (type: `string`):

Forum/category ID

## `author` (type: `string`):

Thread author name

## `authorUsername` (type: `string`):

Thread author username

## `body` (type: `string`):

Original post text

## `location` (type: `string`):

Thread or member location

## `replies` (type: `string`):

Reply count (list view)

## `commentCount` (type: `string`):

Number of posts in thread

## `upvotes` (type: `string`):

Thread upvotes

## `views` (type: `string`):

Thread views

## `datePublished` (type: `string`):

Thread publish date

## `username` (type: `string`):

Member username

## `userId` (type: `string`):

Member ID

## `name` (type: `string`):

Member display name

## `investorType` (type: `string`):

Investor / Agent / Lender etc.

## `memberSince` (type: `string`):

Join date

## `avatar` (type: `string`):

Avatar image URL

## `profileUrl` (type: `string`):

Member profile link

## `scrapedAt` (type: `string`):

ISO timestamp

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "forumUrls": [
        "https://www.biggerpockets.com/forums/311-buying-selling-real-estate"
    ],
    "usernames": [
        "alex1333"
    ],
    "includePosts": true,
    "maxThreadsPerForum": 8,
    "maxItems": 0,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/biggerpockets-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "forumUrls": ["https://www.biggerpockets.com/forums/311-buying-selling-real-estate"],
    "usernames": ["alex1333"],
    "includePosts": True,
    "maxThreadsPerForum": 8,
    "maxItems": 0,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/biggerpockets-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "forumUrls": [
    "https://www.biggerpockets.com/forums/311-buying-selling-real-estate"
  ],
  "usernames": [
    "alex1333"
  ],
  "includePosts": true,
  "maxThreadsPerForum": 8,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/biggerpockets-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/biggerpockets-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2aRe2hG49HpWJEEHN/builds/FKGjFwDeSXoUpDGNB/openapi.json
