Instagram scraper GitHub projects, and which ones still run
Published
If you searched for an Instagram scraper on GitHub, the thing that will decide your afternoon is not which repo has the most stars — it is which repos were still being pushed to this month. Instagram changes its private endpoints often enough that an Instagram scraper which has not had a commit in two years is not a tool you can plan around; it is a tool you are about to debug. Of the widely-linked projects, two are actively maintained as of September 2026, several have not been touched since 2023, and at least one of the repos still named in older listicles no longer exists at all.
This page lists what is actually on GitHub today, with each project's own metadata read off the GitHub API in September 2026, says which ones can do the specific job of pulling posts under one hashtag, and — because this site publishes a paid hosted alternative — says plainly where the free repo is the better answer. Most of the time, for a one-off pull, it is.
The Instagram scraper GitHub projects, side by side
Every figure below was read from the GitHub API on 21 September 2026. Star counts move; the dates are the column that matters.
| Project | Language | Stars | Last push | License | Hashtags? |
|---|---|---|---|---|---|
instaloader/instaloader | Python | 13,412 | 2026-09-06 | MIT | yes, with a login |
subzeroid/instagrapi | Python | 6,827 | 2026-09-21 | not detected by GitHub | yes, with a login |
postaddictme/instagram-php-scraper | PHP | 3,341 | 2025-05-28 | MIT | profile-centric |
althonos/InstaLooter | Python | 2,107 | 2023-01-06 | GPL-3.0 | marked defunct by its own author |
drawrowfly/instagram-scraper | TypeScript | 894 | 2023-03-04 | none declared | yes, per its description |
arc298/instagram-scraper | — | — | — | — | repository returns 404 |
Read that table by the "Last push" column and it splits cleanly into two halves. The top two are alive. Everything below the line was last touched between January 2023 and May 2025, which on a target that changes its endpoints as often as Instagram does is a long time.
The repo that is no longer there
arc298/instagram-scraper was for years the first result for this search and is still named in plenty of blog posts and Stack Overflow answers. As of September 2026 the GitHub API answers Not Found for it. If a tutorial tells you to pip install instagram-scraper and points at that repository, the tutorial is older than it looks — which is a good general test for anything you read about this subject.
instaloader: the maintained default
instaloader/instaloader is the most-starred of the group and the one still receiving releases — v4.15.3 was published on 26 July 2026, and the repository was pushed to on 6 September 2026. Its own description is narrow and accurate:
"Download pictures (or videos) along with their captions and other metadata from Instagram."
For a hashtag job it does two things that matter, and it is honest about the cost of both in its own documentation.
It supports hashtags, and it requires a login to do it. The basic-usage page lists "#hashtag" as a target — "Posts with a certain hashtag (the quotes are usually necessary). Requires login." That is the same trade every tool in this space makes, including this site's: Instagram serves hashtag data to a signed-in session and to nothing else. A project that claims otherwise is either using an endpoint that will close or is quietly returning less than you asked for.
It has a real result ceiling. --count COUNT is documented as "Do not attempt to download more than COUNT posts", and it explicitly "Applies to #hashtag, %location_id, :feed, and :saved". So if you have seen it claimed that open-source tools cannot give you an exact limit on a hashtag pull, that is not true of instaloader.
Where it is less convenient is dates. Instaloader filters posts with --post-filter, a Python expression evaluated per post — --post-filter="date_utc <= datetime(2018, 5, 31)" is the documented example. That expression decides whether a post is saved, after it has been walked. The one option that genuinely stops early is --fast-update, and the docs describe it as stopping "when arriving at the first already-downloaded" item — which is about incremental re-runs, not about an arbitrary date window. For a backfill of a specific month, expect to walk past everything newer than it.
instagrapi: the widest surface, the most maintenance
subzeroid/instagrapi had a commit the same day this article's figures were taken and cut release 3.0.11 on 21 September 2026 — it is the most actively developed project here. It is also a library rather than a downloader: you write the Python, and you get the whole private API surface rather than a CLI with a handful of targets.
Two things to know before you choose it. Its description, verbatim from GitHub, is "🔥 The fastest and powerful Python library for Instagram Private API 2026 with HikerAPI SaaS" — the same project sells a hosted API beside the free library, which is worth reading as the shape of the trade rather than as a criticism. And GitHub does not detect a standard license on the repository, so if licensing matters where you work, check the repository's own terms before you ship anything on it. We cover the code for it, next to the other Python paths, in Python Instagram API options.
The abandoned half
| Project | Why it is on this list | Why it is below the line |
|---|---|---|
postaddictme/instagram-php-scraper | the default answer for PHP, 3,341 stars | last release v0.12.9 in November 2022; last push May 2025 |
drawrowfly/instagram-scraper | advertises hashtag and location pages, "No login or API keys are required" | no push since March 2023, 45 open issues, no declared license |
althonos/InstaLooter | 2,107 stars, still widely linked | its own GitHub description ends with the word "(defunct)" |
The "no login required" claim on drawrowfly/instagram-scraper is the one to be most careful with. It was true of Instagram's public endpoints at the time it was written. It is a 2023 statement about a 2026 target, and the honest way to treat it is as a hypothesis to test in ten minutes rather than an architecture to plan around.
Choosing between a GitHub repo and a hosted run
The real question is not free versus paid — it is who absorbs the maintenance when Instagram changes something. With a repo, that is you, and the bill is your time. With a hosted tool, that is the vendor, and the bill is money.
| An open-source repo | This site's actor | |
|---|---|---|
| Up-front cost | free | none |
| Running cost | your machine, your time | $0.0005 per delivered post |
| Who fixes a breakage | you, or you wait for a maintainer | the vendor |
| Login | your own account | your own account's session cookie |
| Exact result limit | yes, in instaloader (--count) | yes, resultsLimit |
| Date window | filter after the walk | onlyPostsNewerThan / onlyPostsOlderThan stop the walk |
| Scheduling | your own cron and your own retries | the platform's scheduler |
Stay with the GitHub repo if
- The job is one-off or occasional. For a single pull of a hashtag for a report,
pip install instaloaderand one command is unbeatable, and nothing on this page improves on it. - You want the media files, not the rows. Instaloader downloads pictures and videos with their metadata. That is its purpose and it does it well; a dataset of post records is a different output.
- You want the full API surface — profiles, followers, stories, comments, direct messages. That is instagrapi, and this site's actor does none of it.
- You are comfortable maintaining it. If a broken parser is a Tuesday afternoon rather than an incident, the free option is the cheap option.
Consider a hosted run if
- The job is on a schedule and you do not want to own a cron box, a session refresh and a retry policy.
- You need a date window that stops the walk. Asking this actor for seven days of a hashtag ends the run when the feed reaches that date, so a week of posts costs a week of rows — rather than walking everything and discarding most of it.
- You need a bill you can predict. The meter is per delivered post, so a poll that finds nothing costs nothing.
What this site publishes, plainly
This site's Instagram Hashtag Scraper is an Apify actor that does one hashtag per run and nothing else — no profiles, no reels, no followers, no other websites. Its inputs are hashtag, resultsLimit, onlyPostsNewerThan, onlyPostsOlderThan and a sessionCookie from your own account. It bills $0.0005 per delivered post, flat on every Apify plan, and charges nothing for rows it did not hand you.
Against a maintained free library, that is a narrow product asking for money, and it should be judged on exactly three things: it runs somewhere that is not your laptop, its date filter stops the walk instead of filtering afterwards, and somebody else is on the hook when Instagram changes. If none of those three is worth $0.0005 a post to you, instaloader is the correct answer and you should use it.
How to try the free path first, in about ten minutes
- Install instaloader and point it at a hashtag with a small
--count. If it returns rows, you have your answer and you are done. - Expect to log in. The hashtag target requires it; budget for how you will store and refresh that session.
- Measure how long a realistic pull takes, not a five-post smoke test. Rate limiting is the thing that turns a working script into a scheduling problem.
- Decide who owns the breakage. Write down what happens if the parser fails while you are on holiday. That answer, not the price, is what decides between the two halves of this page.
- Only then compare cost. If you are still self-hosting happily in three months, you made the right call.
If you want the paid side of the comparison in more detail, Instagram scraper options compared prices the hosted actors side by side, and Instagram hashtag API options compared covers what Meta's own official API will and will not give you for free.