Gab Scraper avatar

Gab Scraper

Pricing

from $1.00 / 1,000 result (gab post, profile or group)s

Go to Apify Store
Gab Scraper

Gab Scraper

This actor scrapes searches, profiles, groups, and feeds URLs, as well as their posts and comments from the https://gab.com website.

Pricing

from $1.00 / 1,000 result (gab post, profile or group)s

Rating

0.0

(0)

Developer

Web Harvester

Web Harvester

Maintained by Community

Actor stats

3

Bookmarked

32

Total users

0

Monthly active users

2 days ago

Last modified

Share

Gab Scraper extracts public data from gab.com: posts, pinned posts, reposts, quotes, comments and replies, account profiles, groups, custom feeds, search results and Gab Marketplace listings. Paste Gab URLs or type usernames, group IDs or keywords, and download the results as JSON, CSV, Excel or HTML.

No Gab account or login is needed. The scraper reads the same JSON that the Gab website loads, so it's fast and returns complete data.

What can Gab Scraper do?

SourceExample URL or inputWhat you get
Accounthttps://gab.com/a or username aPinned posts first, then the account's posts. Or the profile itself (see Profiles instead of posts)
Posthttps://gab.com/a/posts/109425213213150835The post, optionally with its comments
Grouphttps://gab.com/groups/1898 or group ID 1898Pinned and regular group posts, or the group details
Group mediahttps://gab.com/groups/1898/mediaOnly group posts with images or videos
Feedhttps://gab.com/feeds/107613347340494233Posts of a custom feed
Post searchhttps://gab.com/search/statuses?q=bitcoin or keyword with search type PostsMatching posts
People searchhttps://gab.com/search/people?q=bitcoinPosts of matching accounts, or their profiles
Group searchhttps://gab.com/search/groups?q=bitcoinPosts of matching groups, or the group details
Top searchhttps://gab.com/search/top?q=bitcoinMatching people and groups, like the Top tab on Gab
Marketplace searchhttps://gab.com/marketplace/listings?query=shirt&sort_by=price-ascListings, filtered by keyword, category, condition, price and location
Marketplace itemhttps://gab.com/marketplace/item/117374150812934981One listing

You can mix any of these in one run. Every post, profile, group and listing is saved only once per run, even if several sources lead to it.

How to use Gab Scraper

  1. Add Gab URLs to Gab URLs, or fill Usernames, Group IDs, Search queries or Marketplace search queries.
  2. Set Max posts per account, group, feed or search and, if you want comments, Max comments per post.
  3. Click Start and download the data from the Output tab.

Input example

{
"startUrls": [{ "url": "https://gab.com/a" }, { "url": "https://gab.com/groups/1898" }],
"searchQueries": ["bitcoin"],
"searchType": "STATUSES",
"desiredPostsCount": 50,
"desiredCommentsCount": 10,
"accountPostsSortBy": "NEWEST",
"groupPostsSortBy": "TOP_MONTHLY",
"addUserInfo": true
}

Profiles instead of posts

Set Max posts (desiredPostsCount) to 0 to save account profiles and group details instead of their posts. This works for account and group URLs, usernames, group IDs and People, Groups and Top searches. For example, this saves the profiles of the first 50 accounts that match "bitcoin":

{
"searchQueries": ["bitcoin"],
"searchType": "PEOPLE",
"desiredPostsCount": 0,
"desiredAccountsCount": 50
}

Sorting

InputOptions
accountPostsSortByNEWEST, NO_REPOSTS, TOP_TODAY, TOP_WEEKLY, TOP_MONTHLY, TOP_YEARLY, TOP_ALL_TIME
groupPostsSortByHOT, RISING, NEWEST, RECENT, TOP_TODAY, TOP_WEEKLY, TOP_MONTHLY, TOP_YEARLY, TOP_ALL_TIME
commentsSortByMOST_LIKED, NEWEST, OLDEST
marketplaceSortByNEWEST, OLDEST, PRICE_ASCENDING, PRICE_DESCENDING

Output

Each post has the same columns, no matter where it came from. The text is converted from HTML to plain text with line breaks and full link URLs. A trimmed example:

{
"id": "109425213213150835",
"url": "https://gab.com/a/posts/109425213213150835",
"created_at": "2022-11-29T04:30:46.556Z",
"content": "",
"language": null,
"is_reply": false,
"replies_count": 1017,
"reblogs_count": 2055,
"favourites_count": 6856,
"quotes_count": 173,
"reactions_counts": { "1": 6058, "6": 562, "11": 125 },
"account_id": "31",
"group_id": null,
"pinned": true,
"media_attachments": [
{
"id": "121474005",
"type": "image",
"url": "https://m3.gab.com/media_attachments/18/06/36/1806367bace2a7da52eb3385b324cdc1.jpg",
"preview_url": "https://m3.gab.com/media_attachments/18/06/36/1806367bace2a7da52eb3385b324cdc1.jpg"
}
],
"card": null,
"poll": null,
"mentions": [],
"tags": [],
"status_context": { "id": "109360327882416978", "name": "🙌 Rejoice" },
"reblog": null,
"quote": null,
"account": {
"id": "31",
"username": "a",
"display_name": "Andrew Torba ✝️",
"url": "https://gab.com/a",
"followers_count": 4013494,
"is_verified": true
},
"comments": [
{
"id": "110885414799378576",
"url": "https://gab.com/MsPat4921/posts/110885414799378576",
"content": "Found & connected . . . . . You are a force to be reckoned with, my young friend!",
"in_reply_to_id": "109425213213150835",
"favourites_count": 0
}
]
}
  • reblog holds the full original post when the post is a repost, quote the quoted post.
  • account is added when Add author profile to posts is on, group when Add group details to posts is on.
  • comments is added when Max comments per post is above 0. It holds comments and their replies in the order Gab shows them, each with the same columns as a post. Use in_reply_to_id to rebuild the thread. Comments of a repost are taken from the original post.
  • Profiles have username, display_name, note (bio as text), followers_count, following_count, statuses_count, is_verified, is_pro, avatar, header, created_at and more.
  • Groups have title, description, member_count, is_private, is_verified, url, cover images and more.
  • Listings have title, description, price, price_label, condition, location, marketplace_listing_category, media_attachments, attrs and url. The seller is in account (a Gab user) or business (a Gab business), the other one is null.

The Output tab has separate table views for posts, profiles, groups and marketplace listings.

Limits of Gab

Gab shows less to logged-out visitors than to members. The scraper can only get what Gab shows publicly:

  • Newest posts reach back about a week. With the NEWEST and NO_REPOSTS account sorts and the HOT, RISING, NEWEST and RECENT group sorts, Gab only returns roughly the last 7 days of posts. Use a TOP_* sort, for example TOP_ALL_TIME, to get older posts. The log tells you when a source ran out for this reason.
  • Comments: at most 500 per post.
  • Search: about 20 to 40 pages of results per query.
  • Private accounts and private groups can't be scraped. Their profiles can still be saved with desiredPostsCount: 0.
  • Group media tab requires a Gab login, so group media is collected from the group's posts instead.
  • Gab no longer supports filtering marketplace listings by tags or shipping. These old inputs are accepted but ignored.

FAQ

Do I need a Gab account? No. Only public data is scraped, without logging in.

Why did I get fewer posts than I asked for? The account, group or feed has fewer public posts, or the sort only covers recent posts (see Limits of Gab).

Is it legal to scrape Gab? This Actor only collects publicly available data. Personal data is protected by laws such as GDPR, so only scrape personal data when you have a legitimate reason. If you're unsure, consult a lawyer. Read more in Is web scraping legal?

Integrations and API

Connect Gab Scraper with Make, Zapier, Slack, Google Sheets, Airbyte, GitHub and other integrations, or run it from your code with the Apify API and the apify-client package for Node.js or Python. The API tab has ready-to-use examples.

Focused versions

These Actors have a simpler input form for one use case and return the same data: