devRant Scraper — Developer Rants, Tags & Scores
Pricing
from $2.40 / 1,000 devrant rant records
devRant Scraper — Developer Rants, Tags & Scores
Scrape devRant rants from the Recommended, Recent and Top feeds or the all-time archive: text, tags, score, author and links. $3 per 1,000 rants.
Pricing
from $2.40 / 1,000 devrant rant records
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Security
Limited permissionsShare
devRant Scraper exports public rants from devRant's Recommended, Recent, and Top feeds, including the all-time archive, as structured records with rant text, tags, net score, author, comment count, links, and timestamps. It is built for developer-community researchers, content teams, and dataset builders, and costs about $3.00 per 1,000 rants on the FREE tier ($0.003001 each) plus a $0.006251 start fee.
What data does the devRant scraper return?
It returns one dataset record per unique public rant. Fields that devRant does not provide stay null or an empty list; nothing is invented.
| Field | What it contains |
|---|---|
id, url | devRant rant ID and its public page, for example https://devrant.com/rants/19453270 |
text | Full rant text |
score | Net ++ score shown on devRant |
createdAt | Posting time, ISO 8601 UTC |
author.id, author.username, author.score | Public author ID, username, and the author's total ++ score |
tags | Tags the author added, de-duplicated |
commentsCount | Number of comments (comment text is not collected) |
attachedImageUrl | Attached image URL, or null |
links | Links devRant detected in the text (type, url, shortUrl, title); empty when includeLinks is false |
upvotes, downvotes | Always null. devRant's public feed exposes only the net score, not separate up and down votes. Use score for popularity. |
sort, range, query | The feed settings that produced the record |
sourceUrl, scrapedAt | Feed endpoint and retrieval time |
A run summary goes to the OUTPUT key-value record: outcome (data, partial, empty, or blocked), records, chargedEvents, and warnings.
Which devRant feeds can it read, and how many rants do they hold?
It reads the three public feeds devRant's own apps use: algo (Recommended), recent, and top, each with a day, week, month, or all time range. Today the Top feed with All time is where the volume is.
devRant has had little new activity in 2026. On 2026-10-27 the Recommended/day feed held 2 rants and the Recent feed held 3, while Top/All time returned full pages of 50 rants going back to 2016. That is why the default input is sort: "top" with range: "all".
About one in three feed requests returned a temporary HTTP 500 during that check. The Actor retries each page up to eight times with growing pauses. If every attempt fails and nothing was saved, the run ends as Failed with OUTPUT.outcome: "blocked". If rants were already saved, it keeps them, ends with outcome: "partial" and a warning status, and fabricates nothing.
How do I search devRant rants by keyword?
Set query. The Actor keeps rants whose text, tags, or author username contain the term, ignoring case. This filter works page by page on the feed you chose; it is not devRant's site search.
To search the archive, combine query with Top and All time. For a rare term the Actor may page through a long stretch of the archive before it reaches maxResults, so give the run a sensible timeout. You only pay for rants that match.
When should I use it, and when not?
Use it when you need:
- developer sentiment and pain points by tag (
javascript,deadlines,management) for research or content ideas; - a dataset of developer humor and rants for analysis or NLP experiments;
- the most-upvoted rants of all time with their authors and comment counts;
- a scheduled snapshot of whatever new rants appear.
Do not use it when you need:
- programming questions with tags, views, and answer counts: use Stack Overflow Questions Scraper;
- tech news stories: use Slashdot Scraper or Techmeme Scraper;
- comment text, private profiles, notifications, voting, or posting: the Actor reads public feeds only and does not log in.
How do I run it?
Default input, the Top feed of all time:
{"sort": "top","range": "all","maxResults": 25}
Top rants of all time that mention JavaScript:
{"query": "javascript","sort": "top","range": "all","maxResults": 200,"includeLinks": true}
| Input | Default | Bounds |
|---|---|---|
query | empty | Up to 100 characters |
sort | top | algo, recent, top |
range | all | day, week, month, all |
maxResults | 25 | 1–500 rants, also the billing cap |
pageSize | 50 | 1–50 rants per request |
requestDelayMs | 1,000 | 500–10,000 ms between pages |
includeLinks | true | false drops the links list |
JavaScript (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/devrant-scraper').call({sort: 'top',range: 'all',maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((rant) => [rant.score, rant.tags, rant.url]));
Python (apify-client 3.x)
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("muhammadafzal/devrant-scraper").call(run_input={"sort": "top", "range": "all", "maxResults": 100})for rant in client.dataset(run.default_dataset_id).iterate_items():print(rant["score"], rant["tags"], rant["url"])
Use it from an AI assistant
The Actor works from Claude, ChatGPT, Cursor, or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/devrant-scraper as a server, then ask, for example: "Get the 50 top devRant rants of all time that mention deadlines and summarize what developers complain about most."
What does the output look like?
Two records shaped from devRant's public feeds on 2026-10-27 (rant text shortened):
[{"id": 19453270,"url": "https://devrant.com/rants/19453270","text": "Installing Gentoo on a 2019 T2 Mac Pro with ZFS+Encryption\n\nhttps://battlepenguin.com/tech/...","score": 1,"createdAt": "2026-10-22T19:27:44.000Z","author": { "id": 60161, "username": "djsumdog", "score": 6868 },"tags": ["rant"],"commentsCount": 0,"upvotes": null,"downvotes": null,"attachedImageUrl": null,"links": [{"type": "url","url": "https://battlepenguin.com/tech/installing-gentoo-on-a-2019-t2-mac-pro-with-zfs/","shortUrl": "https://battlepenguin.com/tech/...","title": "https://battlepenguin.com/tech/..."}],"sort": "algo","range": "day","query": null,"sourceUrl": "https://devrant.com/api/devrant/rants?app=3&sort=algo&range=day","scrapedAt": "2026-10-27T07:40:00.000Z"},{"id": 451202,"url": "https://devrant.com/rants/451202","text": "\"You gave us bad code! We ran it and now production is DOWN!…\"","score": 2567,"createdAt": "2017-02-27T06:48:00.000Z","author": { "id": 447625, "username": "cdrice", "score": 4183 },"tags": ["rant", "fml", "upgrades", "morons", "automation", "scripting"],"commentsCount": 106,"upvotes": null,"downvotes": null,"attachedImageUrl": null,"links": [],"sort": "top","range": "all","query": null,"sourceUrl": "https://devrant.com/api/devrant/rants?app=3&sort=top&range=all","scrapedAt": "2026-10-27T07:40:00.000Z"}]
How much does it cost to scrape devRant?
You pay per rant delivered, plus one start fee. Platform usage is included in these prices.
| Event | FREE | BRONZE | SILVER | GOLD, PLATINUM, DIAMOND |
|---|---|---|---|---|
| devRant rant record (per rant) | $0.003001 | $0.002925 | $0.00285 | $0.0024 |
| Actor start (per started GB of allocated memory) | $0.006251 | $0.006094 | $0.005938 | $0.005 |
Runs use at most 512 MB of memory, so each run pays one start event. Worked totals on the FREE tier:
- Default input (25 top rants of all time): $0.006251 + 25 × $0.003001 = $0.081.
- 500 top rants of all time: $0.006251 + 500 × $0.003001 = $1.507 (GOLD: $1.205).
A rant is saved before it is charged, the same rant is never charged twice in a run, and the run stops cleanly when your maximum charge is reached.
Limits and reliability
- Up to 500 rants per run, de-duplicated by rant ID and checked against the output schema before saving.
- Pages are fetched one at a time, spaced by
requestDelayMs; a 500-rant archive run needs 10 requests of 50 rants. - A feed shorter than
pageSizeis treated as the end of the feed. - A page that still fails after eight attempts stops the run. With nothing saved the run ends as Failed (
OUTPUT.outcome: "blocked"); with rants saved it ends with a warning status andoutcome: "partial".
FAQ
Is there a devRant API?
devRant's apps read a public JSON feed. This Actor reads that same feed, so you need no API key, login, or devRant account.
Why do the Recommended and Recent feeds return only a few rants?
They currently hold very few new rants. The default input uses sort: "top" with range: "all", which returns full pages from the archive.
Are upvotes and downvotes real vote counts?
No. devRant's public feed exposes only the net score, so both fields are always null. Use score, the net ++ count devRant displays.
Can I get the comments on each rant?
Only the count, in commentsCount. Comment text and replies are not collected.
Can I export devRant rants to CSV or Excel?
Yes. Export the run's dataset as JSON, CSV, Excel, XML, or RSS from Apify Console, or read it through the API.
Can I run it on a schedule?
Yes. Save an input as a Task and attach an Apify schedule, for example a daily Recent-feed run that collects whatever new rants appear.
Related Actors
- Stack Overflow Questions Scraper: programming questions with tags, scores, views, and answer counts.
- GitHub Repository Search Scraper: repositories by keyword, language, topic, and stars.
- AlternativeTo Scraper: ranked software alternatives for any product.
- iPad App Store Scraper: iPad app prices, ratings, and versions.
- Slashdot Scraper and Techmeme Scraper: technology news stories.
Legal and responsible use
The Actor reads public devRant feeds only. It does not log in, vote, post, or bypass access controls. Rants are user-written content: follow devRant's terms, credit authors when you quote them, and do not use usernames for spam, harassment, or profiling.
Last verified: 2026-10-27