Skip to main content

🚀 Sponsored by CoreClaw

Looking for a production-ready Instagram scraping API?

CoreClaw provides APIs and open-source Workers for Instagram posts, profiles, comments, and more, helping developers collect structured data at scale.

🎁 Start freehttps://coreclaw.com

Instagram Posts Scraper

InstagramPostsScraper is a Python library for collect instagram users' data.

The data obtained by web crawlers is not real-time data, but rather data from a specific point in time on the same day.

I’d really appreciate your support! You can star ⭐ or fork this repository to help me keep sharing more interesting web scrapers.

Support Me

If you enjoy this project and would like to support me, please consider donating 🙌
Your support will help me continue developing this project and working on other exciting ideas!

💖 Ways to Support:

Thank you for your support!! 🎉

Requirements

beautifulsoup4==4.13.4
cloudscraper==1.2.71
lxml==6.1.1
pandas==2.2.3
pytz==2024.2
requests==2.32.3
selenium==4.33.0
seleniumbase==4.39.2

Installation

To install the latest release from PyPI:

pip install instagram-posts-scraper

Usage - Sample

from instagram_posts_scraper.instagram_posts_scraper import InstaPeriodScraper
from IPython.display import display

ig_posts_scraper = InstaPeriodScraper()
target_info = {"username": "stephencurry30", "days_limit": 30}
res = ig_posts_scraper.get_posts(target_info=target_info)
display(res)

Optional parameters

  • username: target instagram user
  • days_limit: Number of days within which to scrape posts..

Version

You can check the installed version and module documentation:

import instagram_posts_scraper

print(instagram_posts_scraper.__version__)  # e.g. 0.2.0
print(instagram_posts_scraper.__doc__)      # module documentation

Sample Output

The scraper returns a single consolidated dictionary containing the target's normalized profile, the account_status, the scraping timestamp (updated_at), a posts list of normalized posts, plus the raw init_posts (picnob first-page HTML posts) and top_posts (profile-scraper highlights) collections, which are preserved verbatim so no source data is lost.

Profile metadata is normalized: followers comes from the profile scraper's precise count, while following and the biography fallback come from picnob. Each entry in posts is normalized to a single, consistent engagement shape (like_count / comment_count as integers). init_posts and top_posts keep their original shapes untouched.

Below is an abbreviated example (long media URLs are truncated with ... for readability). For the complete, real output see examples/example_output.json.

{
  "profile": {
    "username": "stephencurry30",
    "userid": "324599988",
    "full_name": "Wardell Curry",
    "biography": "Believer. Husband. Father. Founder. Philanthropist. Olympic Gold Medalist. NYT Best Selling Author. Philippians 4:13.",
    "followers": 57049215,
    "following": 1296,
    "posts_count": 1556,
    "profile_picture": "https://cdn.iqsaved.com/..."
  },
  "account_status": "public",
  "updated_at": "2026-08-21 15:28:13.009746+08:00",
  "posts": [
    {
      "shortcode": "6772442523573164715722",
      "caption": "Played a lil G with my boy @stephencurry30 this week to kick off Father’s Day weekend! ...",
      "media_type": "igtv",
      "is_video": true,
      "timestamp": 1781966678,
      "like_count": 98397,
      "comment_count": 540,
      "thumbnail": "https://scontent-ord5-1.cdninstagram.com/...",
      "image_url": "https://scontent.cdninstagram.com/..."
    }
    // ... more posts
  ],
  "init_posts": [
    {
      "text": "Quality time looks a little different in our family ...",
      "likes": "101k",
      "comments": "425",
      "time": "7 days ago",
      "thumbnail": "https://sp1.pixnoy.com/..."
    }
    // ... picnob first-page posts, preserved verbatim (now includes the cover `thumbnail`)
  ],
  "top_posts": [
    {
      "timestamp": 1786636718,
      "caption": "Quality time looks a little different in our family 😂 ...",
      "comment_count": 425,
      "like_count": 100894,
      "shortcode": "Db_GagbB20Q"
    }
    // ... profile-scraper highlights, preserved verbatim
  ]
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

instagram_posts_scraper-0.2.0.tar.gz (24.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

instagram_posts_scraper-0.2.0-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file instagram_posts_scraper-0.2.0.tar.gz.

File metadata

  • Download URL: instagram_posts_scraper-0.2.0.tar.gz
  • Upload date:
  • Size: 24.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for instagram_posts_scraper-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4edc4399d01bad8280640249f0f0fef24ffedbc13b847961478a06e2068b8c45
MD5 5c891e8b018f8fe7836eb25481997a57
BLAKE2b-256 d7527109d074286b031c78b390591805b4f2a57d6200a25dccb46fce0be9714d

See more details on using hashes here.

File details

Details for the file instagram_posts_scraper-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for instagram_posts_scraper-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 23014595508c4fe31fb891b8cedf45a8b4b9380b993e5b19346ed9a2f58983f3
MD5 a7770f4cd0c3857d3298c33a390291d3
BLAKE2b-256 3f8c672fd59dfd13932f6450bfc086b7d30781bbe1b94b7c205f6eaf62121693

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page