# BiggerPockets Scraper (`maximedupre/biggerpockets`) Actor

Collect public BiggerPockets topics, replies, and member profiles. Get post text, source links, author details, and available counts for real estate research.

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

## Pricing

from $1.80 / 1,000 forum topics

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

### 🏘️ Turn BiggerPockets discussions into research data

BiggerPockets Scraper helps real estate investors and researchers collect public topics, replies, and member profiles. Get full post text, source links, author details, dates, and available counts in structured rows, so you can review discussions without copying each post by hand.

- Read investing discussions about the **[BRRRR Method](https://apify.com/maximedupre/biggerpockets/examples/brrrr-method)**.
- Collect public topics with the **[BiggerPockets Forum Scraper](https://apify.com/maximedupre/biggerpockets/examples/biggerpockets-forum-scraper)** for market research.
- Export discussion responses with the **[BiggerPockets Replies Scraper](https://apify.com/maximedupre/biggerpockets/examples/biggerpockets-replies-scraper)**.
- Find questions that have no replies with **[BiggerPockets Unanswered Topics](https://apify.com/maximedupre/biggerpockets/examples/biggerpockets-unanswered-topics)**.
- Review topics in the source's trending order with **[BiggerPockets Trending Discussions](https://apify.com/maximedupre/biggerpockets/examples/biggerpockets-trending-discussions)**.

#### 📋 Public posts and member details

Choose one result type per run:

- **Topics:** titles, full opening posts, forum details, authors, dates, and available reply, vote, and view counts.
- **Replies:** separate reply rows with full text, topic IDs, authors, dates, votes, and parent reply IDs when shown.
- **Member profiles:** public names, biographies, stated roles, locations, profile links, and available activity and follower counts.

The Actor collects public content without a BiggerPockets login. It does not collect private messages, gated content, blog articles, paid market insights, or complete member posting histories. It does not score sentiment or evaluate deals.

#### ▶️ Run a forum, topic, or profile collection

1. Choose Topics, Replies, or Member profiles in the Input tab.
2. For Topics or Replies, add forum URLs or IDs, specific topic URLs or IDs, or both.
3. For Member profiles, add usernames or public profile URLs.
4. Set any topic filters and a result limit.
5. Start the run and open Results to view the saved rows.

When the same source item appears again, the first eligible match is saved and later matches are ignored. A saved row does not collect details about later matches.

#### ⚙️ Input

Only fields for your selected result type are used. Topics and Replies need at least one forum or specific topic. Member profiles need at least one member.

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | Required. Choose `topics`, `replies`, or `members`. Topics include the opening post; replies are saved separately. |
| `unansweredOnly` | boolean | For Topics, keep only topics with no replies. Default is `false`. A positive `minReplies` value cannot match this choice. |
| `members` | array of strings | Usernames or public profile URLs, one per line. Required for Member profiles. |
| `forums` | array of strings | Forum category URLs or numeric forum IDs, one per line. Finds topics for Topics and Replies. |
| `topics` | array of strings | Topic URLs or numeric topic IDs, one per line. Retrieves these topics in addition to any found in Forums. |
| `discoveryOrder` | string | Forum order: `newest`, `trending`, `top`, `mostUpvoted`, or `mostReplied`. Default is `newest`. Newest and Trending use BiggerPockets' order. The other choices rank found topics by votes or replies. Does not sort Specific topics. |
| `containsText` | string | Keep topics whose title or opening post contains this text, regardless of letter case. For Replies, checks the topic rather than reply text. Leave blank to skip. |
| `minReplies` | integer | Minimum topic reply count for Topics and Replies. Must be zero or more. Leave empty to skip. A positive value cannot match Only unanswered topics. |
| `minVotes` | integer | Minimum topic vote count for Topics and Replies. Must be zero or more. Leave empty to skip. |
| `minViews` | integer | Minimum topic view count for Topics and Replies. Must be zero or more. Leave empty to skip. |
| `maxItems` | integer | Stop after this many rows of the selected type. Minimum is 1; the form starts at 10. Leaving it empty returns all available matching results until the source is exhausted. |

This is the public input from a successful default-input run:

```json
{
  "resultType": "topics",
  "unansweredOnly": false,
  "forums": [
    "https://www.biggerpockets.com/forums/48-general-real-estate-investing"
  ],
  "discoveryOrder": "newest",
  "maxItems": 10
}
```

#### 🧾 Output

The run's `results` field is a string URL that opens the saved dataset. Each row has one of the three shapes below. Optional fields appear when the source provides them. Dates and counts come from BiggerPockets; the Actor does not independently verify them.

**Topics**

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | `topics`. |
| `id` | string | Source topic ID. Use it to join topics and replies. |
| `url` | string | Source topic URL. |
| `title` | string | Topic title. |
| `text` | string | Full opening-post text. |
| `forum` | object | Forum category details. |
| `forum.id` | string | Source forum ID. |
| `forum.name` | string | Forum name. |
| `forum.url` | string | Forum category URL. |
| `author` | object | Public author details. |
| `author.name` | string | Public author name. |
| `author.username` | string | Public username. |
| `author.profileUrl` | string | Public profile URL. |
| `author.location` | string | Public author location. |
| `createdAt` | string | Source creation date. |
| `publishedAt` | string | Source publication date. |
| `modifiedAt` | string | Source last change date. |
| `replyCount` | integer | Topic reply count. |
| `voteCount` | integer | Topic vote count. |
| `viewCount` | integer | Topic view count. |

This complete topic row comes from a successful run:

```json
{
  "resultType": "topics",
  "id": "1302844",
  "url": "https://www.biggerpockets.com/forums/48/topics/1302844-a-30-year-realtor-still-needed-local-investing-guidance-before-buying-in-cleveland",
  "title": "A 30-Year Realtor Still Needed Local Investing Guidance Before Buying in Cleveland",
  "text": "Had an interesting conversation with a California agent who has been in real estate for 30 yrs and wants to invest in Cleveland.\nHe asked all the right questions about rent, Sec. 8 repairs, lead cert, neighborhoods, property management, and cash flow.\nThe interesting part?\nEven an agent with 30 yrs in real estate still needed someone with local investing experience to confirm the deal made sense and could make money.\nThat's REAL, because real estate is local.\nWhat works in LA may not work in CLE.\nI think this is where a lot of people get confused.\nThere's a big difference between knowing how to sell real estate and knowing how to invest in real estate.\nMost agents can do the former but not the ladder.\nBut investing is a different skill.\nKnowing how to evaluate a deal, risks, real costs, and decide if a property can make money does not automatically fall within an agent's wheelhouse.\nThat knowledge comes from ACTUALLY being an investor.\nHere's where I think many people get into trouble.\nThey mistake real estate sales help for real estate investing guidance.\nThey'll spend hundreds of thousands of dollars buying a property but push back on paying for local investing guidance that could help them avoid losing their shirts.\nA bad decision on a $150,000 property can cost a lot more than good advice ever will.\nWhat's your take?\nShould investment guidance come with a traditional brokerage relationship, or should investors expect to pay separately for local deal evaluation and investment strategy? 🤔",
  "forum": {
    "id": "48",
    "name": "General Real Estate Investing",
    "url": "https://www.biggerpockets.com/forums/48-general-real-estate-investing"
  },
  "author": {
    "name": "Gladimir Lobo",
    "username": "gladimirl",
    "profileUrl": "https://www.biggerpockets.com/users/gladimirl",
    "location": "Cleveland, OH"
  },
  "createdAt": "2026-10-02T07:32:29-07:00",
  "publishedAt": "2026-10-02T14:49:01-07:00",
  "modifiedAt": "2026-10-02T14:49:01-07:00",
  "replyCount": 1,
  "voteCount": 1,
  "viewCount": 47
}
```

**Replies**

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | `replies`. |
| `id` | string | Source reply ID when available. |
| `url` | string | Direct reply URL when available. |
| `topicId` | string | ID of the topic containing the reply. |
| `text` | string | Full reply text. |
| `author` | object | Public author details. |
| `author.name` | string | Public author name. |
| `author.username` | string | Public username. |
| `author.profileUrl` | string | Public profile URL. |
| `author.location` | string | Public author location. |
| `createdAt` | string | Source creation date. |
| `publishedAt` | string | Source publication date. |
| `modifiedAt` | string | Source last change date. |
| `voteCount` | integer | Reply vote count. |
| `parentReplyId` | string | Parent reply ID when shown. |

This complete reply row comes from a successful run:

```json
{
  "resultType": "replies",
  "id": "7271711",
  "url": "https://www.biggerpockets.com/forums/48/topics/1300817-am-i-the-only-one-that-have-realized-real-estate-is-an-awful-investment#post_7271711",
  "topicId": "1300817",
  "text": "Timing.  REFI , sell or keep is all about timing.  There is no magic number of years.  That is one of the few comparisons you can use to the stock market.",
  "author": {
    "name": "Joe Villeneuve",
    "username": "recaps",
    "profileUrl": "https://www.biggerpockets.com/users/recaps",
    "location": "Plymouth, MI"
  },
  "createdAt": "2026-09-15T10:16:10-07:00",
  "voteCount": 0,
  "parentReplyId": "7270711"
}
```

**Member profiles**

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | `members`. |
| `id` | string | Source member ID. |
| `username` | string | Public username. |
| `url` | string | Public profile URL. |
| `name` | string | Public profile name. |
| `avatarUrl` | string | Avatar image URL. |
| `biography` | string | Public biography. |
| `roles` | array of strings | Professional or investor roles stated by the member. |
| `location` | string | Public profile location. |
| `joinedAt` | string | Source membership start date. |
| `postCount` | integer | Source post count. |
| `likesGiven` | integer | Source count of likes given. |
| `votesReceived` | integer | Source count of votes received. |
| `followerCount` | integer | Source follower count. |
| `followingCount` | integer | Source following count. |

This complete member row comes from a successful run:

```json
{
  "resultType": "members",
  "id": "146217",
  "username": "jameswise",
  "url": "https://www.biggerpockets.com/users/jameswise",
  "name": "James Wise",
  "avatarUrl": "https://bpimg.biggerpockets.com/no_overlay/uploads/social_user/user_avatar/146217/1759771156-avatar-jameswise.jpg?twic=v1/output=image/crop=818x818@4x0/cover=512x512&v=2",
  "biography": "▶️ Co-Founder & CEO of Holton-Wise.\r\n▶️ Host on HoltonWiseTV.\r\n▶️ Co-Founder & Angel Investor in a couple companies in the Title & Property Insurance space.\r\n⚠️ I do not monitor my BP PM's. Shoot me an email if you'd like to reach out to me.",
  "roles": [
    "Real Estate Broker"
  ],
  "location": "Cleveland Dayton Cincinnati Toledo Columbus & Akron, OH",
  "joinedAt": "2013-06-13T16:52:41.000-07:00",
  "postCount": 30874,
  "likesGiven": 17096,
  "votesReceived": 20569,
  "followerCount": 2634,
  "followingCount": 1819
}
```

#### 💳 Pricing

You pay per saved topic, reply, or member profile. A Forum topic charge covers one topic with its full opening post. A Forum reply charge covers one reply saved on its own. A Member profile charge covers one public profile.

Set `maxItems` to limit the number of saved rows. Leaving it empty returns all available matching results until the source is exhausted. See the Actor's pricing tab for current rates by Apify plan.

#### 🔌 Integrations

Open the saved dataset in Apify Console or read it through the Apify API. Export the rows for spreadsheet analysis, or use Apify schedules and webhooks in a repeated research workflow.

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Do text and engagement filters check reply text?

No. In Replies mode, `containsText`, `minReplies`, `minVotes`, and `minViews` check the topic. Replies from matching topics are saved as separate rows.

##### Can I combine forums and specific topics?

Yes. Add both lists for Topics or Replies. The first eligible occurrence of the same source item is saved, and later matches are ignored.

##### Can I collect unanswered topics with a positive minimum reply count?

Those choices cannot match. Use Only unanswered topics with `minReplies` empty or set to zero.

##### Why are some fields missing?

The Actor returns available public source details. A field may be absent when BiggerPockets does not provide it. It does not infer missing facts.

##### Will this return every historical discussion?

Exhaustive historical coverage is not guaranteed. Leaving `maxItems` empty returns all available matching results until the source is exhausted.

##### Is this the official BiggerPockets website?

No. The official website is [BiggerPockets](https://www.biggerpockets.com/). This Actor collects public discussion and profile data for research.

##### Can this replace a rental property calculator?

It can collect discussions about rental property calculators or the BRRRR method from selected forums. It does not calculate rental returns or evaluate investment deals.

### 📝 Changelog

**v0.0** (02-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~biggerpockets/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Reddit Comments Search Scraper](https://apify.com/maximedupre/reddit-comments-search-scraper): Find public comments about real estate investing in relevant subreddits.
- [Realtor Scraper](https://apify.com/maximedupre/realtor-scraper): Collect property listings to review alongside investor discussions.
- [ForRent Scraper](https://apify.com/maximedupre/forrent-scraper): Compare rental listing prices and floor plans in a market you are researching.
- [PropertyShark Scraper](https://apify.com/maximedupre/propertyshark): Add public property records and sale history to real estate research.
- [Zillow Foreclosure & Pre-Foreclosure Scraper](https://apify.com/maximedupre/zillow-foreclosure-pre-foreclosure-scraper): Review distressed-property listings in markets discussed by investors.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

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

Topics include the full opening post. Replies are separate records linked to their topic. Member profiles include available public profile details.

## `unansweredOnly` (type: `boolean`):

For Topics, keep only topics with no replies. A positive Minimum topic replies value cannot match this choice.

## `members` (type: `array`):

Enter BiggerPockets usernames or public profile URLs, one per line. Required for Member profiles.

## `forums` (type: `array`):

Enter BiggerPockets forum category URLs or numeric forum IDs, one per line. For Topics and Replies, finds topics in these forums. Enter at least one forum or specific topic.

## `topics` (type: `array`):

Enter BiggerPockets topic URLs or numeric topic IDs, one per line. For Topics and Replies, retrieves these topics in addition to any topics found in Forums.

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

Choose the order for topics found in Forums. Newest and Trending use BiggerPockets' order. Top, Most upvoted, and Most replied rank the topics found using their vote or reply counts. Applies to Topics and Replies. Does not sort Specific topics.

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

Keep topics whose title or opening post contains this text, without regard to letter case. For Topics and Replies, checks the topic, not the reply text. Leave blank to skip this filter.

## `minReplies` (type: `integer`):

For Topics and Replies, keep topics with at least this many replies. Leave empty to skip this filter. A positive value cannot match Only unanswered topics.

## `minVotes` (type: `integer`):

For Topics and Replies, keep topics with at least this many votes. Leave empty to skip this filter.

## `minViews` (type: `integer`):

For Topics and Replies, keep topics with at least this many views. Leave empty to skip this filter.

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

Stop after this many records of the selected result type. Leave empty to return all available matching results until the source is exhausted.

## Actor input object example

```json
{
  "resultType": "topics",
  "unansweredOnly": false,
  "forums": [
    "https://www.biggerpockets.com/forums/48-general-real-estate-investing"
  ],
  "discoveryOrder": "newest",
  "maxItems": 10
}
```

# Actor output Schema

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

Open the topics, replies, or member profiles saved by this run.

# 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 = {
    "resultType": "topics",
    "forums": [
        "https://www.biggerpockets.com/forums/48-general-real-estate-investing"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/biggerpockets").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 = {
    "resultType": "topics",
    "forums": ["https://www.biggerpockets.com/forums/48-general-real-estate-investing"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/biggerpockets").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 '{
  "resultType": "topics",
  "forums": [
    "https://www.biggerpockets.com/forums/48-general-real-estate-investing"
  ],
  "maxItems": 10
}' |
apify call maximedupre/biggerpockets --silent --output-dataset

```

## MCP server setup

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

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/yXkJLWOmaUVVfsrpI/builds/KgIBgryibWoCUrhkz/openapi.json
