Instagram Reels Discovery Scraper - No Login avatar

Instagram Reels Discovery Scraper - No Login

Pricing

$1.00 / 1,000 instagram reels

Go to Apify Store
Instagram Reels Discovery Scraper - No Login

Instagram Reels Discovery Scraper - No Login

Discover regional public Instagram Reels and creators without login. Select a country and export captions, engagement, authors, audio, thumbnails, and video URLs. Pay only $1 per 1,000 unique Reels delivered.

Pricing

$1.00 / 1,000 instagram reels

Rating

0.0

(0)

Developer

DataScraperES

DataScraperES

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Discover public Instagram Reels and creators for a selected country without an Instagram account, cookies, or login credentials. Choose the discovery country and maximum number of unique Reels, then receive structured data for content research, creator discovery, trend monitoring, social media analysis, and automated data workflows.

The Actor begins with Instagram's public logged-out Reels experience. For larger requests, it broadens the dataset with additional public Reels from creators surfaced during that discovery process.

This is a regional discovery Actor. The selected country controls where the public discovery request is made, but it does not prove that every returned Reel was created in that country. Instagram can recommend global content in every region.

Why use this Actor?

  • No Instagram login, account, cookies, or session required
  • Country-level regional discovery with a global AUTO option
  • Simple maximum-result and maximum-spend control
  • Unique results deduplicated by Instagram media ID
  • Reel captions, engagement, creator, audio, image, and video data
  • Clear distinction between feed discoveries and additional creator Reels
  • Automatic concurrency for both small and large requests
  • JSON, JSONL, CSV, Excel, XML, and RSS exports
  • Apify API, schedules, webhooks, and integrations supported
  • Pay only for unique Reels successfully delivered

Quick start

  1. Open the Input tab.
  2. Select a country under Discovery country, such as United States, Spain, Brazil, or Mexico.
  3. Enter the maximum number of Reels under Maximum Reels.
  4. Leave Concurrency at 0 for automatic scaling.
  5. Click Save & Start.
  6. Open the Dataset when the run finishes and export the results in your preferred format.

For a quick test, use:

{
"countryCode": "US",
"resultsLimit": 10
}

Regional discovery

countryCode selects the country from which Instagram's logged-out Reels experience is requested. All discovery sessions in the run use that same country, while separate sessions can use different residential addresses inside the selected country.

This setting is useful for comparing the public Reels experience available to audiences in different markets. For example, run once with ES and once with BR, then compare creators, captions, hashtags, audio, and engagement.

Country targeting influences the discovery context; it is not an origin classifier:

  • discoveryCountry: "ES" means the Reel was collected through an Instagram discovery session requested from Spain.
  • It does not mean the creator lives in Spain or that the Reel was recorded or uploaded there.
  • Instagram may surface global or cross-language content in any country.
  • Select AUTO when you want an unrestricted global sample instead of a fixed country.

The input is a dropdown, so you do not need to remember or type a country code. The Actor supports 50 selected markets plus the global AUTO option.

Supported discovery countries

CodeCountryCodeCountry
USUnited StatesINIndia
BRBrazilIDIndonesia
TRTurkeyJPJapan
MXMexicoGBUnited Kingdom
DEGermanyARArgentina
ITItalyFRFrance
KRSouth KoreaCOColombia
ESSpainPHPhilippines
THThailandEGEgypt
PKPakistanBDBangladesh
SASaudi ArabiaMYMalaysia
NGNigeriaMAMorocco
VNVietnamCACanada
AUAustraliaZASouth Africa
AEUnited Arab EmiratesNLNetherlands
PLPolandRORomania
PTPortugalCLChile
PEPeruECEcuador
UYUruguayGRGreece
CZCzechiaSESweden
DKDenmarkCHSwitzerland
ATAustriaBEBelgium
IEIrelandUAUkraine
SGSingaporeNZNew Zealand
TWTaiwanILIsrael

What the Actor discovers

The dataset can contain two clearly labelled result sources:

discoverySourceMeaning
reels_feedThe Reel was surfaced directly by Instagram's public logged-out Reels experience.
discovered_creatorThe creator was first surfaced in that public experience, and this is another public Reel from the same creator.

Use only rows with discoverySource: "reels_feed" when you need the strictest public-feed sample. Use the complete dataset when you need broader coverage of the creators Instagram surfaced.

Additional creator Reels should not be interpreted as an official global popularity ranking. Instagram does not publish the ranking logic used by its public discovery experience.

Common use cases

Creator discovery

Identify public creators surfaced through Instagram's Reels experience and collect content samples for further evaluation.

Trend and format research

Analyze captions, hashtags, mentions, audio, video length, publishing patterns, and engagement signals across a current discovery sample.

Influencer and partnership research

Build a candidate dataset containing creator usernames, verification status, public Reel URLs, content descriptions, and available engagement metrics.

Social media monitoring

Run the Actor on a schedule and compare datasets over time to observe changes in creators, formats, topics, and audio usage.

Content classification

Send captions, hashtags, thumbnails, or Reel URLs into analytics, moderation, tagging, or machine-learning workflows.

Data enrichment

Add public Reel and creator information to existing CRM, marketing, research, or business-intelligence datasets.

Input reference

All input fields are optional. Running the Actor without custom input uses the default values below.

FieldTypeDefaultAllowed valuesDescription
countryCodestringUSAUTO or one of 50 countries in the dropdownCountry used for the Instagram discovery request. This is a regional targeting signal, not proof of Reel origin.
resultsLimitinteger1001 to 5000Maximum number of unique Reels delivered across the run. This is also the main maximum-spend control.
concurrencyinteger00 to 15Number of discovery sessions processed in parallel. Use 0 for automatic scaling.
maxRetriesinteger31 to 5Maximum attempts after a temporary network error or Instagram rejection.

Discovery country (countryCode)

Choose a country from the dropdown. The stored API value is the uppercase code shown below the country name. Common examples:

ValueDiscovery region
USUnited States
ESSpain
BRBrazil
MXMexico
DEGermany
AUTONo fixed country; global rotating sample

For consistent market comparisons, keep the same country in every run. To compare countries, use separate runs so every row in a dataset has one clear discovery context. API calls are also restricted to the same 50 codes, preventing misspelled or unsupported values from starting a run.

Maximum Reels (resultsLimit)

resultsLimit is a maximum, not a guaranteed minimum. The Actor stops when one of these conditions is reached:

  • The requested number of unique Reels has been delivered.
  • Instagram exposes no additional unique results after repeated discovery attempts.
  • The configured Apify spending limit cannot pay for another result.
  • Temporary Instagram access pressure remains after all configured retries.

If you request 50 Reels and only 20 unique Reels can be delivered, the dataset contains 20 rows and you pay for 20 results.

Concurrency (concurrency)

The recommended value is 0:

  • Small runs use low concurrency to avoid unnecessary overhead.
  • Medium runs increase concurrency automatically.
  • Large runs use more parallel sessions to reduce completion time.

Set a manual value only when you specifically need to reduce request pressure or control resource use. Higher concurrency does not guarantee more unique content because Instagram controls the available discovery pool.

Maximum request attempts (maxRetries)

The default value of 3 is appropriate for most runs. Increase it when temporary network instability is more important than run duration. Lower it when you prefer a faster failure after repeated access problems.

Input examples

Quick sample: 10 Reels

{
"countryCode": "US",
"resultsLimit": 10
}

Research sample: 50 Reels

{
"countryCode": "ES",
"resultsLimit": 50,
"concurrency": 0,
"maxRetries": 3
}

Larger discovery dataset: 1,000 Reels

{
"countryCode": "BR",
"resultsLimit": 1000,
"concurrency": 0,
"maxRetries": 3
}

Conservative request pressure

{
"countryCode": "DE",
"resultsLimit": 100,
"concurrency": 2,
"maxRetries": 4
}

Output overview

Every row in the default dataset represents one unique public Reel. Duplicate media IDs are removed across the complete run.

Instagram does not expose every field for every Reel. Unavailable values are returned as null, false, or an empty list as appropriate. The Actor does not estimate or invent missing metrics.

Core Reel fields

FieldTypeDescription
schemaVersionintegerVersion of the output contract.
idstringStable Instagram media ID used for deduplication.
shortCodestringShortcode used in the public Instagram Reel URL.
urlstringPermanent public Reel page, such as https://www.instagram.com/reel/.../.
typestringNormalized content type. Always reel.
productTypestring or nullProduct classification exposed by Instagram, commonly clips.
captionstring or nullReel caption text.
hashtagsstring[]Unique hashtags extracted from the caption, without #.
mentionsstring[]Unique usernames mentioned in the caption, without @.
timestampstring or nullPublication time in ISO 8601 UTC format.
scrapedAtstringTime the result was collected, in ISO 8601 UTC format.

Engagement and video fields

FieldTypeDescription
likesCountinteger or nullLike count when Instagram exposes it.
commentsCountinteger or nullComment count when available. Comments themselves are not included.
videoViewsCountinteger or nullView count when available.
videoPlaysCountinteger or nullPlay count when available. This can differ from unique views.
videoDurationSecondsnumber or nullVideo duration in seconds.
widthinteger or nullOriginal media width.
heightinteger or nullOriginal media height.
hasAudiobooleanWhether the Reel reports an audio track.
isPaidPartnershipbooleanWhether Instagram marks the Reel as a paid partnership.
displayUrlstring or nullBest available thumbnail or display-image URL.
videoUrlstring or nullBest available direct video URL. Direct media URLs can expire.

Creator fields

The owner object can contain:

FieldTypeDescription
owner.idstring or nullInstagram creator ID.
owner.usernamestring or nullPublic Instagram username.
owner.fullNamestring or nullPublic display name.
owner.isVerifiedbooleanVerification status exposed for the creator.
owner.profilePicUrlstring or nullPublic profile-image URL.

Audio fields

The audio object can contain:

FieldTypeDescription
audio.idstring or nullAudio identifier when available.
audio.titlestring or nullTrack or original-audio title.
audio.artiststring or nullArtist or creator name exposed for the audio.
audio.isOriginalAudiobooleanWhether the metadata represents original audio.

Discovery fields

FieldTypeDescription
discoverySourcestringreels_feed or discovered_creator.
discoveryCountrystring or nullCountry selected for this discovery run. It is null when countryCode is AUTO. This is not the creator's or Reel's confirmed origin.
seedReelIdstring or nullReel that led to the creator expansion. It is null for direct feed discoveries.

Example result

{
"schemaVersion": 2,
"id": "1234567890123456789",
"shortCode": "ExampleCode",
"url": "https://www.instagram.com/reel/ExampleCode/",
"type": "reel",
"productType": "clips",
"caption": "A public Reel caption #travel @example_creator",
"hashtags": ["travel"],
"mentions": ["example_creator"],
"timestamp": "2026-07-22T12:00:00+00:00",
"displayUrl": "https://...",
"videoUrl": "https://...",
"width": 1080,
"height": 1920,
"likesCount": 1250,
"commentsCount": 34,
"videoViewsCount": 42000,
"videoPlaysCount": 45100,
"videoDurationSeconds": 18.4,
"hasAudio": true,
"isPaidPartnership": false,
"owner": {
"id": "987654321",
"username": "example_creator",
"fullName": "Example Creator",
"isVerified": false,
"profilePicUrl": "https://..."
},
"audio": {
"id": "456789",
"title": "Original audio",
"artist": "Example Creator",
"isOriginalAudio": true
},
"discoverySource": "reels_feed",
"discoveryCountry": "ES",
"seedReelId": null,
"scrapedAt": "2026-07-22T12:05:00+00:00"
}

Pricing

The Actor uses pay-per-result pricing:

EventPriceWhen it is charged
reel-result$0.001Once for each unique Reel successfully written to the default dataset.

There is no separate startup charge.

Cost examples

Unique Reels deliveredMaximum result charge
10$0.01
50$0.05
100$0.10
1,000$1.00
5,000$5.00

You are not charged for:

  • Duplicate Reels
  • Invalid or incomplete records that cannot be delivered
  • Failed requests and retries
  • Sessions that return no new unique results
  • The free run summary

The billing rule is: one default-dataset row equals one reel-result event.

Apify spending limits are respected. If the remaining budget cannot pay for another result, the Actor stops without delivering unpaid rows.

Exporting results

Open the run's Dataset tab to:

  • View results in a table
  • Select the fields you want to export
  • Download JSON, JSONL, CSV, Excel, XML, or RSS
  • Copy the dataset API endpoint
  • Connect the dataset to another application

Direct media URLs can expire or become region-restricted. Store the permanent url field whenever you need a durable reference to the Reel.

Run summary

Each run creates a free SUMMARY record in the default key-value store. It includes customer-relevant information such as:

  • Requested and delivered Reel counts
  • Selected discovery country and whether regional targeting was enabled
  • Charged result count and estimated result charge
  • Whether an Apify spending limit stopped the run
  • Whether the available unique discovery pool was exhausted
  • Duplicate and invalid records skipped
  • Number of creators discovered
  • Sessions, requests, response volume, and duration
  • Concurrency used and completion time

The summary is not a billable result and does not appear as a Reel row in the dataset.

Using the Apify API

The Actor can be started programmatically with the Apify API. Replace YOUR_APIFY_TOKEN with a token from your Apify account settings.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("datascraperes/instagram-reels-discovery-scraper").call(
run_input={
"countryCode": "ES",
"resultsLimit": 50,
"concurrency": 0,
"maxRetries": 3,
}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(f"Received {len(items)} unique Reels")

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('datascraperes/instagram-reels-discovery-scraper').call({
countryCode: 'ES',
resultsLimit: 50,
concurrency: 0,
maxRetries: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Received ${items.length} unique Reels`);

HTTP request

curl -X POST \
"https://api.apify.com/v2/acts/datascraperes~instagram-reels-discovery-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"countryCode":"ES","resultsLimit":50,"concurrency":0,"maxRetries":3}'

The run response contains defaultDatasetId. Use it to retrieve the results:

https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json

Do not expose your Apify token in public code, browser-side applications, shared screenshots, or public URLs.

Scheduling and integrations

You can use standard Apify features to automate recurring discovery:

  • Schedules: run daily, weekly, or at another interval.
  • Webhooks: notify another service when a run succeeds or fails.
  • Tasks: save reusable input configurations.
  • API clients: integrate with Python, JavaScript, or direct HTTP requests.
  • Automation platforms: connect through tools such as Make, Zapier, n8n, Google Sheets, or other Apify integrations.

Every run is an independent discovery snapshot. Instagram's public selection can change between runs, so scheduled datasets are useful for observing change over time.

Understanding result counts

Why can the Actor return fewer results than requested?

resultsLimit is the maximum number of unique rows. A run can finish below that limit when:

  • Instagram repeatedly returns Reels that are already in the dataset.
  • The current public discovery pool is limited.
  • Some returned objects lack the minimum fields required for a usable result.
  • Instagram keeps rejecting requests after all retries.
  • Your Apify spending limit is reached.

Only successfully delivered unique rows are charged.

Why can two runs return different Reels?

Instagram can vary public discovery content by time, region, availability, recommendation randomness, and platform experiments. Two runs from the same country can therefore return different Reels. Use discoveryCountry to keep the requested market attached to each row.

Why do engagement metrics differ between runs?

Likes, comments, views, and plays can change continuously. Instagram can also hide or delay individual metrics.

Troubleshooting

SituationMeaningRecommended action
Results include creators from other countriesCountry selection controls the request region, not the creator's residence or the Reel's place of creation.Treat the dataset as a regional recommendation sample, not as verified origin data.
Two runs for the same country differInstagram's logged-out recommendations are dynamic and partly randomized.Compare larger samples or recurring snapshots instead of expecting identical rows.
A country run cannot initializeInstagram or the selected regional network was temporarily unavailable.Retry later, increase maxRetries, or use another valid country code.
Fewer rows than resultsLimitThe requested value is a maximum and the current discovery pool was exhausted or repetitive.Review availableResultsExhausted and spendingLimitReached in SUMMARY. Run again later if you need a different discovery snapshot.
videoUrl or displayUrl is nullInstagram did not expose that media URL for the Reel.Use the permanent Reel url.
A direct media URL no longer worksInstagram CDN URLs can expire or be restricted by region.Re-run the Actor to obtain a fresh URL and retain the permanent Reel page.
Likes, views, plays, or comments are nullInstagram did not expose that metric.Treat null as unavailable, not as zero.
The run stops at an exact spending boundaryThe Apify charge limit was reached safely.Increase the run spending limit only if you want more paid results.
A large run takes longer than expectedMore sessions and deduplication are required as the requested dataset grows.Keep automatic concurrency enabled or split the work into scheduled snapshots.
The same creator appears multiple timesLarger discovery runs intentionally include additional public Reels from creators surfaced in the feed.Filter by owner.id or owner.username when you need one row per creator.
A private or deleted Reel is missingOnly publicly accessible content can be returned.No action is required; inaccessible content is not charged.

Limitations

  • Country selection controls the discovery request region; it does not verify the creator's residence, nationality, upload location, or filming location.
  • The Actor does not accept a profile, hashtag, keyword, city, place, or audio query.
  • It does not return a personalized logged-in feed.
  • It cannot access private, deleted, restricted, age-gated, or login-only content.
  • Results represent a public discovery sample, not a complete index of Instagram Reels.
  • discovered_creator rows are additional public creator content, not guaranteed trending rankings.
  • Engagement metrics depend on what Instagram exposes at collection time.
  • Direct video, image, audio, and profile-image URLs can expire.
  • Comments are not returned; only the available comment count is included.
  • Follower counts and complete profile records are not part of this Actor's output.
  • Instagram can change its public pages and available data without notice.

Choosing the right Instagram Actor

Use this Actor when you want to discover public Reels and creators without supplying a target.

Choose another specialized Actor when you need:

  • Reels from one or more specific public profiles
  • Posts from specific profiles
  • Details for known Instagram profiles
  • Comments from a particular post or Reel
  • Keyword, hashtag, place, or profile search

This distinction prevents accidental use of a discovery dataset when the real requirement is a complete profile feed or a targeted search.

Responsible use

This Actor processes publicly accessible Instagram content. You are responsible for ensuring that your collection and use of the data comply with applicable laws, contracts, privacy rules, copyright requirements, and platform policies.

Recommended practices:

  • Collect only the fields needed for a legitimate purpose.
  • Avoid using public personal data to harm, discriminate against, or profile individuals unfairly.
  • Protect exported datasets and Apify API tokens.
  • Review retention requirements and delete data that is no longer necessary.
  • Respect intellectual-property rights when storing or reusing captions, images, audio, or videos.

The Actor is not affiliated with, endorsed by, or sponsored by Instagram or Meta.

Frequently asked questions

Does the Actor require an Instagram login?

No. You do not provide an Instagram username, password, cookie, or session.

Can I scrape Reels from a specific profile?

Not with this Actor. It discovers creators through Instagram's public Reels experience. Use a profile-specific Reels Actor when you already know the username or profile URL.

Can I search by keyword or hashtag?

No. There is no search-term input. Instagram controls the public discovery selection.

Are the returned Reels guaranteed to be from the selected country?

No. The selected country is the region from which Instagram's public Reels experience is requested. Instagram can recommend international content, and public Reel records usually do not prove where a creator lives or where a video was created. Use discoveryCountry as discovery context, not as verified origin data.

What does AUTO do?

AUTO disables fixed-country targeting and produces a broader global sample. Select one of the 50 listed countries when you need comparable regional datasets.

Can I target a city?

No. Country-level targeting provides a larger and more reliable discovery pool. The Actor does not claim city-level accuracy.

Rows marked reels_feed were surfaced directly in Instagram's public discovery experience. Rows marked discovered_creator are additional Reels from creators found there and should not be described as an official global trending ranking.

Are duplicates charged?

No. The Actor deduplicates by stable Instagram media ID across the complete run. Only unique rows written to the default dataset are charged.

What happens if I request 1,000 Reels but receive 700?

You pay for 700 delivered unique rows. Review SUMMARY to see whether the available pool, retries, or spending limit stopped the run.

Is there a startup fee?

No. The only Actor event is $0.001 for each unique Reel delivered.

Can I download the videos?

When Instagram exposes a direct video URL, it is returned in videoUrl. Direct URLs can expire, so keep the permanent url field and download media only when you have the right to do so.

Are comments included?

No. commentsCount may be available, but comment text, authors, and replies are not included.

Can I monitor changes over time?

Yes. Create an Apify Task, schedule recurring runs, and store each dataset as a discovery snapshot. Metrics and public selections can change between runs.

Can I use the Actor through an API?

Yes. Use the Apify API, Python client, JavaScript client, schedules, tasks, webhooks, or integrations.

Does it work with private accounts or private Reels?

No. Only publicly accessible content is supported.

Where can I report an issue?

Use the Issues tab on the Actor page. Include the run ID, input used, expected result, and a description of the problem. Never include passwords, cookies, API tokens, or other secrets.