# Gab Search Scraper (`brick_joey_yto/gab-search-scraper`) Actor

Extract posts and profiles from Gab.com via the public Mastodon-compatible API. No auth required. Get author feeds, engagement metrics, media, hashtags, and full profile data.

- **URL**: https://apify.com/brick\_joey\_yto/gab-search-scraper.md
- **Developed by:** [William Billings](https://apify.com/brick_joey_yto) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$30.00 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Gab Search Scraper — Extract Posts & Profiles From the Alternative Social Platform

Scrape Gab.com posts and profiles at scale for OSINT research, brand monitoring, and political sentiment analysis. Get clean, structured data with author profiles, engagement metrics, and media — **no authentication required**. Powered by Gab's public Mastodon-compatible API.

### What data can you extract from Gab?

For each post, you get:

- **Post content** — full text (HTML stripped), post ID, posted date, post URL
- **Author profile** — username, display name, avatar, follower/following/post counts, Pro and verified status
- **Engagement metrics** — replies, reblogs, favourites, quotes, and direct replies per post
- **Media** — image and video URLs with media type detection
- **Hashtags & mentions** — parsed and extracted from post text
- **Post metadata** — language, sensitivity flag, visibility, reply/repost indicators, link preview cards

### Sample output

```json
{
  "id": "109876543210987654321",
  "text": "Independent journalism is more important than ever. Support creators who speak the truth.",
  "posted_date": "2026-08-01T14:30:00.000Z",
  "url": "https://gab.com/PrisonPlanet/109876543210987654321",
  "author": {
    "id": "1234567",
    "username": "PrisonPlanet",
    "acct": "PrisonPlanet",
    "display_name": "Paul Joseph Watson",
    "avatar": "https://gab.com/media/avatar/example.jpg",
    "followers_count": 250000,
    "following_count": 1200,
    "statuses_count": 45000,
    "url": "https://gab.com/PrisonPlanet",
    "is_pro": true,
    "is_verified": false
  },
  "replies_count": 340,
  "reblogs_count": 890,
  "favourites_count": 2100,
  "quotes_count": 45,
  "direct_replies_count": 120,
  "hashtags": ["#IndependentMedia", "#Journalism"],
  "mentions": ["@realalexjones"],
  "has_media": true,
  "media_urls": ["https://gab.com/media/uploads/example.jpg"],
  "media_types": ["image"],
  "language": "en",
  "sensitive": false,
  "spoiler_text": "",
  "is_reply": false,
  "is_reblog": false,
  "in_reply_to_id": null,
  "reblog_of_id": null,
  "visibility": "public",
  "card": null
}
```

### How to use the Gab Search Scraper

1. **Choose a mode** — Select `author` to get posts from a specific user's feed, or `profile` to get the user's profile data only
2. **Enter a username** — Provide the Gab username (e.g., `PrisonPlanet`)
3. **Set max results** — Choose how many posts to extract (up to 10,000) — author mode only
4. **Toggle filters** — Enable `includeReplies` to include reply posts, or `onlyMedia` to only return posts with media attachments — author mode only
5. **Run the actor** — Click Start and get your data in seconds
6. **Export** — Download as JSON, CSV, XML, Excel, or HTML

### Input fields

| Field          | Type    | Required | Default | Description                                                 |
| -------------- | ------- | -------- | ------- | ----------------------------------------------------------- |
| mode           | string  | Yes      | author  | `author` for user posts, `profile` for profile data only    |
| username       | string  | Yes      | —       | Gab username (e.g., `PrisonPlanet`)                         |
| maxResults     | integer | No       | 100     | Maximum posts to return (1-10,000) — author mode only       |
| includeReplies | boolean | No       | false   | Include reply posts in results — author mode only           |
| onlyMedia      | boolean | No       | false   | Only return posts with media attachments — author mode only |

### Use cases

- **OSINT research** — Gather intelligence from alternative social platforms for threat assessment
- **Brand monitoring** — Track mentions of your brand on Gab in real time
- **Political sentiment analysis** — Analyze political discourse and sentiment trends on Gab
- **Academic research** — Study social media dynamics on alternative and fringe platforms
- **Influencer research** — Find high-engagement Gab creators by analyzing reblog and favourite ratios
- **Content moderation** — Monitor sensitive or flagged content for compliance and safety teams
- **Media analysis** — Track how news and narratives spread across alternative social platforms

### How much does it cost to scrape Gab?

**$0.03 per result.** You only pay for the data you actually receive — failed or empty requests are not charged.

| Results     | Cost     |
| ----------- | -------- |
| 100 posts   | ~$3.00   |
| 500 posts   | ~$15.00  |
| 1,000 posts | ~$30.00  |
| 5,000 posts | ~$150.00 |

The first run is free under Apify's free tier, so you can test with a small batch before scaling up.

### Is scraping Gab legal?

Yes. This scraper only accesses publicly available data through Gab's public Mastodon-compatible API, which returns public data without any authentication. It does not bypass authentication or access private data. Always check Gab's Terms of Service for restrictions on how you use the data.

### FAQ

#### Do I need a Gab account or API key?

No. The scraper uses Gab's public Mastodon-compatible API, which returns public data without any authentication. Just provide a username and start scraping.

#### What data fields are included in the output?

Each post includes: post ID, text content (HTML stripped), posted date, post URL, full author profile (username, display name, avatar, follower/following/post counts, Pro/verified status), engagement metrics (replies, reblogs, favourites, quotes), hashtags, mentions, media URLs and types, language, sensitivity flag, reply/repost indicators, and link preview cards.

#### Can I scrape media attachments?

Yes, the output includes `media_urls` and `media_types` for posts with images or videos. You can also use the `onlyMedia` filter to only return posts with media attachments.

#### How many results can I get per run?

You can retrieve up to 10,000 results per run using the `maxResults` parameter. The scraper paginates through the user's feed automatically using Gab's `max_id` pagination.

#### What is the difference between author and profile mode?

**Author mode** pulls all posts from a specific user's feed. **Profile mode** returns only the user's profile data (username, display name, bio, follower counts, etc.) without any posts.

#### Can I integrate this with my existing pipeline?

Yes. Apify provides a REST API, webhooks, and integrations with Zapier, Make, Airbyte, and LangChain. You can schedule runs, export to S3 or Google Sheets, and chain actors together.

### Related actors

Check out our other social media scrapers:

| Actor                                                                               | Platform  | Use case                              |
| ----------------------------------------------------------------------------------- | --------- | ------------------------------------- |
| [Bluesky Search Scraper](https://apify.com/brick_joey_yto/bluesky-search-scraper)   | Bluesky   | Decentralized social posts & profiles |
| [Threads Profile Scraper](https://apify.com/brick_joey_yto/threads-profile-scraper) | Threads   | Meta's text platform                  |
| [Substack Notes Scraper](https://apify.com/brick_joey_yto/substack-notes-scraper)   | Substack  | Writer platform notes                 |
| [BitChute Video Scraper](https://apify.com/brick_joey_yto/bitchute-search-scraper)  | BitChute  | Alternative video platform data       |
| [Farcaster Cast Scraper](https://apify.com/brick_joey_yto/farcaster-scraper)        | Farcaster | Web3 social data                      |
| [Spoutible Profile Scraper](https://apify.com/brick_joey_yto/spoutible-scraper)     | Spoutible | Twitter alternative monitoring        |

### Support

Need a custom feature or found a bug? Open an issue on the Actor's page and we'll respond within 24 hours. We can also build custom scrapers for your specific use case — just reach out.

# Actor input Schema

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

Author: get posts from a specific user. Profile: get user profile data only.

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

Gab username (e.g., PrisonPlanet, support, a)

## `maxResults` (type: `integer`):

Maximum number of posts to extract (author mode only)

## `includeReplies` (type: `boolean`):

Include reply posts in results (author mode only)

## `onlyMedia` (type: `boolean`):

Only return posts with media attachments (author mode only)

## Actor input object example

```json
{
  "mode": "author",
  "username": "PrisonPlanet",
  "maxResults": 100,
  "includeReplies": false,
  "onlyMedia": false
}
```

# 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": "PrisonPlanet"
};

// Run the Actor and wait for it to finish
const run = await client.actor("brick_joey_yto/gab-search-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": "PrisonPlanet" }

# Run the Actor and wait for it to finish
run = client.actor("brick_joey_yto/gab-search-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": "PrisonPlanet"
}' |
apify call brick_joey_yto/gab-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/vbA3qdyuV7bKpyoe2/builds/LONXqi1DFeMqgGsdc/openapi.json
