Instagram Hashtag Scraper

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.

ProjectLanguageStarsLast pushLicenseHashtags?
instaloader/instaloaderPython13,4122026-09-06MITyes, with a login
subzeroid/instagrapiPython6,8272026-09-21not detected by GitHubyes, with a login
postaddictme/instagram-php-scraperPHP3,3412025-05-28MITprofile-centric
althonos/InstaLooterPython2,1072023-01-06GPL-3.0marked defunct by its own author
drawrowfly/instagram-scraperTypeScript8942023-03-04none declaredyes, per its description
arc298/instagram-scraperrepository 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

ProjectWhy it is on this listWhy it is below the line
postaddictme/instagram-php-scraperthe default answer for PHP, 3,341 starslast release v0.12.9 in November 2022; last push May 2025
drawrowfly/instagram-scraperadvertises hashtag and location pages, "No login or API keys are required"no push since March 2023, 45 open issues, no declared license
althonos/InstaLooter2,107 stars, still widely linkedits 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 repoThis site's actor
Up-front costfreenone
Running costyour machine, your time$0.0005 per delivered post
Who fixes a breakageyou, or you wait for a maintainerthe vendor
Loginyour own accountyour own account's session cookie
Exact result limityes, in instaloader (--count)yes, resultsLimit
Date windowfilter after the walkonlyPostsNewerThan / onlyPostsOlderThan stop the walk
Schedulingyour own cron and your own retriesthe platform's scheduler

Stay with the GitHub repo if

Consider a hosted run if

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

  1. Install instaloader and point it at a hashtag with a small --count. If it returns rows, you have your answer and you are done.
  2. Expect to log in. The hashtag target requires it; budget for how you will store and refresh that session.
  3. 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.
  4. 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.
  5. 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.

All articles