# Reddit Profile Scraper (`agentx/reddit-profile-scraper`) Actor

Reddit profile scraper that turns a username, u/ handle, or profile URL into a 26-field profile with up to 1,000 posts and 10,000 comments in one run. Covers karma, account age, status flags, moderated communities, and trophies. From $0.0225 per profile.

- **URL**: https://apify.com/agentx/reddit-profile-scraper.md
- **Developed by:** [AgentX](https://apify.com/agentx) (community)
- **Categories:** Social media, Lead generation, Agents
- **Stats:** 10 total users, 2 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.105 / profile

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**Reddit Author Scraper is a Reddit profile scraper that turns one username into a structured dataset record with karma totals, account-status flags, moderated communities, trophies, and optional post and comment collections.**

- **Accepts a plain username, a `u/` handle, or a full profile URL — all three resolve to the same account.**
- **26 documented dataset fields, including moderated communities with subscriber counts and trophies.**
- **Up to 1,000 posts and 10,000 comments per run, deduplicated by Reddit item id, with each cap independently configurable down to 0.**

[**Run a small test**](https://apify.com/agentx/reddit-author-scraper) · [**View API**](https://apify.com/agentx/reddit-author-scraper/api)

The smallest useful test sets `max_posts` and `max_comments` to `0`: one start event plus one result event costs **$0.04000** on the FREE tier.

### What does Reddit Author Scraper do?

Reddit Author Scraper looks up a single Reddit account and writes one normalized profile record to the default Apify dataset. The record combines the public profile (display name, bio, avatar, banner, creation time), karma totals split by posts and comments, account-status flags (verified, premium, employee, moderator, suspended, NSFW), the communities the account moderates with subscriber counts, its trophies, and — when requested — samples of the account's posts and comments with scores, subreddits, and parent-post context.

The Actor answers one narrow question: what public profile and activity context does Reddit expose for this username right now? It does not discover lists of usernames, read private messages, perform write actions, or score a person's trustworthiness. Karma and account age are Reddit-provided signals for your own analysis, not conclusions.

### How do I use Reddit Author Scraper?

1. Open [Reddit Author Scraper](https://apify.com/agentx/reddit-author-scraper) and enter a username — `spez`, `u/spez`, and `https://www.reddit.com/user/spez/` all work.
2. Choose how many posts and comments to include, or set both caps to `0` for a profile-only lookup.
3. Click **Start** and open the default dataset to review or export the record.

The examples below share one scenario — one post and one comment for `spez`:

```json
{
  "username": "spez",
  "max_posts": 1,
  "max_comments": 1
}
```

### Input

All three inputs are required.

| Input | Type | Range | What it controls |
| --- | --- | --- | --- |
| `username` | string | Plain username, `u/` handle, or profile URL | The Reddit account to look up |
| `max_posts` | integer | 0–1,000 | How many of the user's submissions to include; `0` skips posts |
| `max_comments` | integer | 0–10,000 | How many of the user's comments to include; `0` skips comments |

The caps are request maximums, not guarantees. Reddit's own submission listing stops near a thousand entries, and its comment listings reach roughly ten thousand for the most active accounts, so a new, quiet, or suspended account returns fewer items than the cap allows.

### Output

Each successful lookup stores one dataset item with 27 documented fields.

| Field group | Fields |
| --- | --- |
| Provenance | `processor`, `processed_at` |
| Identity | `id`, `username`, `profile_url`, `display_name`, `about`, `avatar`, `banner`, `created_at` |
| Karma | `total_karma`, `post_karma`, `comment_karma` |
| Account state | `is_verified`, `email_verified`, `is_premium`, `is_employee`, `is_moderator`, `is_suspended`, `is_nsfw`, `accepts_followers`, `robots_hidden` |
| Collections | `trophies`, `moderated` |
| Activity | `posts`, `comments` |

An abbreviated, illustrative record for the shared scenario:

```json
{
  "id": "1w72",
  "username": "spez",
  "profile_url": "https://www.reddit.com/user/spez/",
  "total_karma": 940207,
  "post_karma": 184005,
  "comment_karma": 756202,
  "created_at": "2005-06-06T04:00:00+00:00",
  "is_verified": true,
  "is_employee": true,
  "is_moderator": true,
  "moderated": [
    { "name": "r/announcements", "subscribers": 302603085 }
  ],
  "trophies": [
    { "name": "15-Year Club" }
  ],
  "posts": [
    { "id": "1u7hraf", "title": "21 years of Reddit", "subreddit": "u_spez", "score": 840 }
  ],
  "comments": [
    { "id": "os0o1vi", "subreddit": "u_spez", "score": 95, "is_root": false }
  ]
}
```

Fields Reddit does not return for an account stay `null` rather than being filled with substitutes; a suspended account, for example, returns only its name and a karma total. Posts carry scores, flair, media details, crosspost duplicates, and subreddit context; comments carry scores, parent and post references, and moderation flags. Export as JSON or JSONL to keep the nested arrays intact, or CSV and Excel for the flat profile fields.

### Use cases

- **Moderator vetting** — collect a consistent snapshot of an account's age, karma, moderated communities, and sampled activity before a human review.
- **Influencer research** — compare authors by reach signals such as karma, trophies, and the subscriber counts of communities they moderate.
- **Audience-segment profiling** — sample what an author publicly posts and comments to understand the topics and communities they engage with.
- **Data enrichment** — join the profile fields onto Reddit usernames you already hold from surveys, CRM records, or community exports.

This Actor is not a fit for private messages, bulk username discovery, write actions, or automated judgments about a person's identity or trustworthiness.

### API and integrations

The Actor ID is `bb0YV0rZPcvyB4fX8`, and the full name is `agentx/reddit-author-scraper`.

#### HTTP API

The synchronous endpoint below runs the shared scenario and returns dataset items. Keep the token in an environment variable rather than source control.

```bash
curl -X POST "https://api.apify.com/v2/acts/agentx~reddit-author-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username":"spez","max_posts":1,"max_comments":1}'
```

The [API page](https://apify.com/agentx/reddit-author-scraper/api) provides generated examples for the Apify SDKs and the current OpenAPI surface.

#### Apify MCP server

Connect a compatible client to Apify's hosted MCP endpoint:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com"
    }
  }
}
```

After authorization, ask the client to inspect `agentx/reddit-author-scraper` with `fetch-actor-details`, then call the Actor with the same three inputs. See the [Apify MCP documentation](https://docs.apify.com/integrations/mcp) for client configuration.

### Pricing

The Actor uses pay-per-event pricing. A start event is charged when the run begins, one result event covers the dataset record, and optional post and comment events are charged per item included in it. Prices can change, so check the [pricing page](https://apify.com/agentx/reddit-author-scraper/pricing) before a production run.

| Event | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| Actor Start | $0.01000 | $0.01000 | $0.01000 | $0.01000 | $0.01000 | $0.01000 |
| Result | $0.03000 | $0.02700 | $0.02400 | $0.02250 | $0.02250 | $0.02250 |
| Post | $0.00500 | $0.00450 | $0.00400 | $0.00375 | $0.00375 | $0.00375 |
| Comment | $0.00100 | $0.00090 | $0.00080 | $0.00075 | $0.00075 | $0.00075 |

Smallest useful FREE-tier run: one start at $0.01000 plus one result at $0.03000 equals **$0.04000** with both activity caps set to `0`. Setting a maximum total charge on the run is the simplest cost protection for exploratory work.

### Limits and troubleshooting

- **Fewer posts or comments than requested** — the caps are maximums; Reddit's listings control what is actually available. Retry with a cap of `1` to separate source availability from volume behavior.
- **User not found** — check the spelling, then confirm the account still exists on reddit.com; deleted accounts stop resolving.
- **Suspended account** — the run still succeeds, but Reddit returns only the name and a karma total, so most fields are `null` and `is_suspended` is `true`.
- **Null values** — `null` means Reddit did not expose that value for this account; it is not equivalent to `false` or zero.
- **Duplicate-looking posts** — items are deduplicated by Reddit item id, but crossposts are distinct Reddit records and appear in each post's `duplicates` list rather than being merged.
- **Nested arrays in CSV** — posts, comments, and trophies export more faithfully as JSON or JSONL.

To report a problem, rerun the smallest failing input first, then open an [Actor issue](https://console.apify.com/actors/bb0YV0rZPcvyB4fX8/issues) with the public run ID, the input, and the observed result. Never include your API token.

### Frequently asked questions

#### Can I do a bulk Reddit user lookup?

Yes — run one username per run and schedule or loop runs through the API for bulk Reddit user lookup, so each profile keeps its own cost, status, and evidence trail.

#### Does it support Reddit karma and history export?

Yes. Reddit karma and history export is the core output: karma totals split by posts and comments, plus up to 1,000 posts and 10,000 comments per run, exportable as JSON, CSV, or Excel from the dataset.

#### Does the Actor return a complete Reddit history?

No. `max_posts` and `max_comments` are request caps, and Reddit's own listings stop near 1,000 submissions and roughly 10,000 comments even for the most active accounts. Treat the output as the available sample at run time.

#### Can I pass a full profile URL instead of a username?

Yes. `spez`, `u/spez`, and `https://www.reddit.com/user/spez/` all resolve to the same account.

#### What happens with both caps set to zero?

The run performs a profile-only lookup: the dataset record contains the profile, karma, status flags, trophies, and moderated communities, with empty post and comment arrays. This is also the cheapest way to validate the schema.

#### Is karma the same as upvotes?

No. Reddit describes karma as an approximate reflection of votes rather than a one-to-one count. Use `post_karma` and `comment_karma` as reputation signals, not exact engagement totals.

#### Do I need Reddit credentials?

No. The input has exactly three fields — username and the two caps — and requires only an Apify account to run.

#### Can I run it on a schedule?

Yes. Use Apify Schedules to snapshot the same username over time, and keep `processed_at` so later comparisons are anchored to a timestamp.

### Related AgentX Actors

- [Reddit Viral Scraper](https://apify.com/agentx/reddit-viral-scraper) — start from keywords and surface trending Reddit posts instead of a known author.
- [SubReddit Post Scraper](https://apify.com/agentx/subreddit-post-scraper) — collect posts from a named community rather than one user's history.
- [SubReddit Info Scraper](https://apify.com/agentx/subreddit-info-scraper) — profile a community's metadata to complement author-level research.

### Enrich your data with AgentX

- [All Jobs Scraper](https://apify.com/agentx/all-jobs-scraper) — add hiring-market context from supported job boards.
- [All Shopping Scraper](https://apify.com/agentx/all-shopping-scraper) — add product and retail data from supported shopping sources.
- [All Video Scraper](https://apify.com/agentx/all-video-scraper) — add public video metadata from supported platforms.

### Support

- [Actor Store page](https://apify.com/agentx/reddit-author-scraper)
- [API examples](https://apify.com/agentx/reddit-author-scraper/api)
- [Actor issues](https://console.apify.com/actors/bb0YV0rZPcvyB4fX8/issues)
- [AgentX community](https://t.me/Apify_Actor)

[**Run a small test**](https://apify.com/agentx/reddit-author-scraper) · [**View API**](https://apify.com/agentx/reddit-author-scraper/api)

# Actor input Schema

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

Reddit account to look up. Accepts a plain username, a u/ prefix, or a full profile URL — 'spez', 'u/spez' and 'https://www.reddit.com/user/spez/' all resolve to the same account.

## `max_posts` (type: `integer`):

Posts to return, minimum 0 and no upper limit. Reddit's own submissions listing stops near 1,000 entries however many the account has — measured across accounts from 1 to 35,000 submissions — so asking for more returns everything Reddit will serve. Set 0 to skip posts entirely.

## `max_comments` (type: `integer`):

Comments to return, minimum 0 and no upper limit. Reddit's listing reaches roughly 10,000 comments, and only with the second sort pass this actor makes; asking for more returns everything it will serve. Set 0 to skip comments entirely.

## Actor input object example

```json
{
  "username": "spez",
  "max_posts": 1,
  "max_comments": 1
}
```

# Actor output Schema

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

Reddit author profiles with the requested post and comment collections, karma totals, and account details.

# 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 = {
    "username": "spez",
    "max_posts": 1,
    "max_comments": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentx/reddit-profile-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 = {
    "username": "spez",
    "max_posts": 1,
    "max_comments": 1,
}

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

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

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

```

## CLI example

```bash
echo '{
  "username": "spez",
  "max_posts": 1,
  "max_comments": 1
}' |
apify call agentx/reddit-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=agentx/reddit-profile-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bb0YV0rZPcvyB4fX8/builds/gFzJmm4HxaMmwxHF1/openapi.json
