
Instagram Post Scraper
Pricing
from $1.60 / 1,000 posts

Instagram Post Scraper
Scrape Instagram posts. Just add one or more Instagram usernames and get your data in seconds including text, hashtags, mentions, comments, images, URLs, likes, locations, and metadata. Export scraped data, run the scraper via API, schedule and monitor runs or integrate with other tools.
4.4 (33)
Pricing
from $1.60 / 1,000 posts
485
Total users
46K
Monthly users
5.4K
Runs succeeded
>99%
Issues response
2 days
Last modified
a day ago
id | caption | url | commentsCount | likesCount | firstComment |
---|---|---|---|---|---|
359***66 | Books allow readers to *** at the link in bio. | https://www.instagram.com/p/DH***C/ | 41 | 9028 | More about books 😍 |
359***88 | Photos by @ingo*** about these pumas at the link in bio. | https://www.instagram.com/p/DH***o/ | 143 | 68801 | ❤️ |
359***22 | Meet the Nat*** their stories at the link in bio. | https://www.instagram.com/p/DH***O/ | 136 | 13385 | Omg!!! ❤️ @dzennypha_ |
The data above is synthetic and does not reflect real-world values. View full dataset
CDN images expire
Closed
When using Apify’s Instagram scraper, the media URLs generated for downloaded content expire almost immediately, causing download failures.
Is there a way to access a stable URL for the copy of each media file that Apify has already downloaded, rather than relying on the original, short-lived Instagram URL?

Hi!
This actor is not capable of downloading media files. URLs from Instagram expire in hours, normally in 24-48 hours. It is usually long enough for downloading, but it should be done as soon as possible after the run.
If you were blocked earlier, it means your IP is rejected or recognized as a data center.
To be sure, please try https://apify.com/lukaskrivka/images-download-upload with the input sample below (just change dataset ID):
{"convertWebpToPng": false,"datasetId": "cenIPyerkqY7FAiY2","fileNameFunction": "({ url }) => new URL(url).href.split('&').at(-1)","imageCheckType": "content-type","noDownloadRun": false,"pathToImageUrls": "images","preDownloadFunction": "({ data }) => data.flatMap((postOrProfile) => {\r\n const items = postOrProfile?.latestPosts || [postOrProfile];\r\n return items.map((item) => {\r\n if (!item.images?.length) {\r\n item.images = [item.displayUrl];\r\n }\r\n item.images = item.images.filter(Boolean).map((url, index) => `${url}&${item.ownerUsername}-${item.shortCode}-${index}`)\r\n return item;\r\n })\r\n})","proxyConfiguration": {"useApifyProxy": true},"s3CheckIfAlreadyThere": false,"uploadTo": "key-value-store"}

I will close the issue now, but if there is anything else we can help with, please let us know.