9GAG Scraper — Trending Posts, Votes & Comments avatar

9GAG Scraper — Trending Posts, Votes & Comments

Pricing

from $2.10 / 1,000 results

Go to Apify Store
9GAG Scraper — Trending Posts, Votes & Comments

9GAG Scraper — Trending Posts, Votes & Comments

Scrape 9GAG, one of the largest meme and entertainment communities on the web. Extract post title, permalink, section, media type, upvotes and downvotes, net score, comment count, publish date, NSFW and promoted flags and image across every section.

Pricing

from $2.10 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a day ago

Last modified

Share

One of the web's largest meme and entertainment communities in rows: post title, permalink, section, media type, upvotes and downvotes, net score, comment count, publish date and NSFW and promoted flags.

What does the 9GAG Scraper do?

This Actor collects posts from 9GAG, one of the largest meme and entertainment communities online. You pick a section and a listing — Hot or Fresh — and it returns the feed, one row per post, with the full voting and comment picture.

The feed is cursor-paged, not numbered: each response hands back the token needed to fetch the block after it, so pages cannot be requested out of order or in parallel. This Actor threads that cursor through the run, which is the only ordering the endpoint will serve, and stops cleanly when the feed hands back no further token.

Both vote directions are kept, and their difference is calculated into score. On a community that votes both ways, a post with 1,400 up and 70 down is a very different thing from one with 1,400 up and 700 down, and only the net figure shows it.

Who is it for?

  • Social media analysts tracking what spreads on a large meme community.
  • Brand and agency teams watching internet culture for campaign material.
  • Trend researchers measuring how quickly a topic surfaces and decays.
  • Content platforms benchmarking engagement against a mature community.
  • Academics studying voting behaviour and virality.
  • Meme and media aggregators seeding a catalogue of trending content.

Use cases

  • Track what is trending in a section day by day.
  • Rank posts by net score rather than upvotes to find genuinely well-received content.
  • Compare comment count against votes to find the posts people argue about.
  • Measure how the Hot and Fresh feeds diverge over a day.
  • Filter out promoted posts to see the organic feed only.
  • Build a dataset of titles for text and topic analysis.
  • Feed an AI agent trending posts for internet-culture questions.

Why use this 9GAG Scraper?

  • Both vote directions plus the net score, not just upvotes.
  • Cursor paging handled properly, so a long run keeps advancing instead of re-serving the first block.
  • Promoted and NSFW flags kept, so you can separate paid from organic and filter adult content.
  • Publish dates converted to ISO from unix timestamps.
  • Any section — pass the name straight from a 9GAG URL.
  • Keyless, login-free and proxy-free.

What data can you extract?

One row per post. Anything the source left blank comes back as null.

FieldDescription
postId9GAG post ID
urlLink to the post
titlePost title
sectionSection the post belongs to
mediaTypePhoto, Animated or Video
upVotesUpvote count
downVotesDownvote count
scoreUpvotes minus downvotes
commentsComment count
publishedAtPublish date as ISO
isNsfwYes or No
isPromotedYes or No
imageUrlPost image
scrapedAtISO timestamp of collection

Sample output

{
"postId": "azxNKxq",
"url": "http://9gag.com/gag/azxNKxq",
"title": "Actual journalism",
"section": "iam_god",
"mediaType": "Animated",
"upVotes": 1397,
"downVotes": 73,
"score": 1324,
"comments": 147,
"publishedAt": "2026-08-22T04:40:18.000Z",
"isNsfw": "No",
"isPromoted": "No",
"imageUrl": "https://img-9gag-fun.9cache.com/photo/azxNKxq_460s.jpg",
"scrapedAt": "2026-08-22T09:38:15.311Z"
}

How to use the 9GAG Scraper

Option A — the main feed

Leave Section as default and Listing on Hot, set Maximum results and run.

Option B — one section

Put a section name in Sectionfunny, gaming, wholesome, memes — copied from a 9GAG URL.

Option C — a trend series

Schedule a daily run on the same section and diff by postId to see what entered and left the feed.

Input parameters

ParameterTypeDefaultDescription
sectionstringdefaultSection name as it appears in a 9GAG URL
listingselecthothot ranks by engagement, fresh is newest first
maxResultsinteger1000Stop after this many posts (max 20,000)
proxyConfigurationobject(off)Optional; the public feed answers without one

Tips for best results

  • Rank by score, not upVotes. A heavily downvoted post can still show a big upvote number; the net figure is what the community actually settled on.
  • Filter isPromoted out before measuring organic engagement — paid posts distort every average.
  • Use comments against score to find controversy: high comments with a modest score usually means an argument.
  • Fresh moves faster than Hot. For a trend series, schedule Fresh more frequently.
  • Deduplicate on postId when combining scheduled runs; a post can stay in Hot for days.

Integrations

Connect the dataset to Make, Zapier, Airbyte, Google Sheets, Slack, GitHub or any HTTP endpoint through Apify integrations, or schedule a run and push results into a warehouse with a webhook.

API usage

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("logiover/ninegag-post-scraper").call(run_input={
"section": "funny",
"listing": "hot",
"maxResults": 2000,
})
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
organic = [r for r in rows if r["isPromoted"] == "No"]
top = sorted(organic, key=lambda r: r["score"] or 0, reverse=True)[:5]
for r in top:
print(r["score"], r["title"])

Use with AI agents (MCP)

The Actor is callable from the Apify MCP server, so an assistant can pull trending posts directly and answer questions about what is spreading online.

FAQ

Do I need a 9GAG account or API key?

No. This Actor reads the public feed; there is nothing to register.

How many posts can one run return?

Up to 20,000, ten per request. The feed is cursor-paged, so requests run one after another rather than in parallel — expect a few hundred posts in well under a minute.

Why is paging slower than on other scrapers?

Because the endpoint will not serve a page you ask for by number. Each response contains the token for the next block, so the run has to walk the feed in order. Requesting blocks in parallel simply returns the same one repeatedly.

What sections are available?

Any name that appears in a 9GAG URL — default for the main feed, plus funny, gaming, wholesome, memes, wtf and the rest.

What is the difference between Hot and Fresh?

Hot is ranked by engagement and moves slowly; Fresh is newest-first and turns over quickly. Use Fresh if you want to catch posts early.

Does it collect comments themselves?

No, only the comment count. This Actor covers the feed record; individual comment threads are a separate request per post.

Can I filter out adult content?

Yes — every row carries isNsfw, so filter on it after the run.

Can I export to CSV or Excel?

Yes — every run's dataset exports to JSON, CSV, Excel, XML or JSONL.

How fresh is the data?

Each run reads the feed live, so vote and comment counts are as current as 9GAG's own at the moment you run it.

Why did my run return fewer posts than requested?

Because the feed ran out of cursor. The Actor logs that plainly and stops rather than looping on the last block.

This Actor reads 9GAG's public feed — no accounts, no logins, no private content. Post titles, vote counts and permalinks are information published for public view. Uploader identities are not collected. You remain responsible for how you use the results, including any copyright in the images themselves, which belong to their creators, and for respecting the platform's terms in your own jurisdiction.

  • Bilibili Scraper — trending videos and engagement from China's video community.
  • Reddit Historical Archive Scraper — full-subreddit post archives.
  • Threads Scraper — posts and engagement.
  • Bluesky Historical Archive Scraper — full-feed social archives.

*Maintained: last verified 2026-09-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).