How to Find an Instagram User ID for the Graph API
An Instagram user ID is the numeric identifier Instagram assigns each account, such as 17841401441775531. Instagram profile URLs contain only the username, never the ID, so you have to resolve it. The Graph API route requires a token and specific permissions; a public lookup tool resolves public accounts without either.
Every Instagram integration starts at this gap. The Graph API addresses accounts by numeric ID, your client gave you a list of @handles, and there is no arithmetic that connects the two. The handle-to-ID step is a lookup, and which lookup you can use depends on what access you have.
Why doesn't the Instagram URL contain the user ID?
Because Instagram's URL scheme was designed around usernames from the start and never carried numeric IDs, unlike Facebook, where several legacy URL formats do expose them. An Instagram profile lives at instagram.com/username and that is the whole address.
The ID still exists internally, and it is the identifier that matters for anything programmatic. It is also the stable one: a user can change their username whenever they like, and when they do, every stored reference to the old handle becomes wrong. Worse than wrong, because freed usernames can be claimed by someone else, so an old handle may resolve to a different person entirely. The numeric ID does not have that problem.
So the architectural advice is the same as on every other platform. Resolve handles to IDs once, store the IDs, and treat the handle as display metadata that you refresh rather than depend on. A dataset keyed on usernames will quietly drift out of correctness.
What does an Instagram user ID look like?
A long integer, commonly seventeen digits for current accounts, though length varies with when the account was created. Meta's own documentation shows examples in that range, such as 17841401441775531.
Seventeen digits puts these values past the safe integer range in JavaScript, where integers above 2^53 lose precision silently. Parse an Instagram ID as a JSON number and you can get back a value that is very nearly right and does not match anything. Nothing throws. The ID just stops working. Store IDs as strings and compare them as strings, and use a string column rather than a 32-bit or 64-bit integer field in your database.
You will also encounter two different ID concepts in Meta's Instagram documentation, which causes real confusion. There is the Instagram-scoped ID, which Instagram professional accounts use, and there is the older Instagram user ID. Which one an endpoint returns depends on which API product and login flow you are using, so when debugging a mismatch, check that both sides of your comparison are the same kind of identifier rather than assuming any numeric ID is interchangeable.
How do you find an Instagram user ID through the Graph API?
Two paths, depending on whether the account is yours or someone else's.
For an account you manage
If your app has been authorised by the account owner, the ID comes back as part of normal authentication. With the Facebook Login flow, the connected Instagram professional account is reached through the linked Facebook Page: query the Page node for its instagram_business_account field and the ID is in the response. This is the standard pattern for an app managing a client's Instagram presence.
For someone else's public professional account: Business Discovery
Meta provides the business_discovery edge for reading public data about other Instagram Business and Creator accounts, and its response includes the target's id. The requirements are specific and worth reading before you plan around it, because they rule the endpoint out for many projects.
According to Meta's documentation, the request must be made by an Instagram Business or Creator account using a Facebook User access token carrying instagram_basic, instagram_manage_insights and pages_read_engagement. If the token's user holds their Page role through Business Manager, ads_management or ads_read is also required. The endpoint is documented as available for the Instagram API with Facebook Login, and Meta's page for it does not list Instagram Login. Age-gated accounts are not returned.
The call addresses your own IG user node and names the target by username, in the shape GET /{your-ig-user-id}?fields=business_discovery.username(TARGET){id,username,followers_count}. Note what this means in practice: you need a professional account of your own, an app, a reviewed set of permissions, and a target that is itself a Business or Creator account. A personal Instagram account cannot be looked up this way at all.
Pin an explicit API version in the call. Meta ships new Graph API versions roughly twice a year, with v26.0 current since July 2026, and endpoint behaviour does shift between them. Read the changelog before bumping.
What if you don't have API credentials?
Then Business Discovery is not available to you, and that is the common case. Getting a professional account, an app, and reviewed permissions in place is a real project, and it is disproportionate if what you need is to convert a list of client handles into IDs during onboarding.
For that, paste the profile URL or username into the Instagram user ID finder and read the number. No login, no app, no permission review. It reads public data only, which is the honest constraint: a public account resolves, a private account does not.
That limit is worth dwelling on, because it is where most expectations break. If an Instagram account is set to private, its ID is not publicly derivable, and no tool operating within the platform's rules can produce it. A failed lookup against a private account is correct behaviour. Any service claiming to resolve private accounts is either returning the wrong account or doing something you should not build on.
What do you actually use the Instagram user ID for?
It is the key for essentially everything programmatic, which is why the lookup step is unavoidable rather than optional.
Content publishing goes through it: creating a media container and publishing it both address your IG user node by ID. Insights are the same, whether account-level reach and profile views or per-media metrics. Comment and mention management, webhook subscriptions for new comments, and the hashtag search endpoints all take the ID. Any analytics pipeline storing historical performance should key on it so that a username change does not split one account's history into two unrelated series.
Outside the API, the ID is useful simply as a stable record key. Agencies managing a roster of client accounts hit username changes regularly, and a records system keyed on handles needs manual reconciliation every time one changes. Keyed on IDs, it needs nothing.
One thing the ID is not for: downloading content. If what you want is to save a reel, a photo or a story, that is a separate workflow that starts from the post URL rather than from an account ID. The Instagram reels downloader and story downloader take the public URL directly, and no ID lookup is involved.
How does this compare to other platforms?
The handle-versus-ID split is universal, but Instagram sits in the middle of the difficulty range.
Facebook is easier in one specific way: several of its legacy URL formats expose the numeric ID outright, so some lookups are just string parsing. Instagram never does that. On the other hand, Facebook's object model is messier, with profiles, Pages and groups all using indistinguishable numeric IDs with different permissions.
TikTok is harder, because it maintains two identifiers at once. There is a numeric UID and a separate opaque sec_uid string, and many endpoints accept only the latter, so knowing the number is not always enough. The TikTok user ID lookup covers that split.
YouTube is unusual in that the /channel/UC... URL form contains the channel ID directly, though handle-based and custom URLs do not, giving three identifier types in simultaneous circulation. See the YouTube channel ID lookup for that. X is the hardest case now, because changes to its API access have made resolving a numeric user ID from a handle markedly more awkward than it used to be.
For the general principles behind all of this, including the string-versus-number storage trap that catches projects on every platform, the Facebook ID finder page and its surrounding material cover the same ground in the context of the platform where it is most visible.
Frequently asked questions
Can I find the user ID of a private Instagram account?
No. A private account's numeric ID is not publicly derivable, and Business Discovery does not cover private accounts either, since it requires the target to be a public Business or Creator account. Treat a failed lookup on a private account as the expected outcome rather than a tool problem, and record it as unresolvable.
Does Business Discovery work with personal Instagram accounts?
No, in either direction. The requesting account must be an Instagram Business or Creator account, and Meta documents the target as a Business or Creator account identified by username. Personal accounts are not returned, and neither are age-gated accounts. If your targets are personal accounts, this endpoint is not a route to their IDs.
Does the Instagram user ID change if someone changes their username?
No, and that is the main reason to store it. A username can be changed freely, after which the old handle may be claimed by a different person, so stored handles can silently start pointing at the wrong account. The numeric ID stays attached to the same account throughout and does not have that failure mode.
Why is my Instagram ID losing its last digits?
Because something in your stack is treating it as a number. Instagram IDs commonly run to seventeen digits, past the safe integer range in JavaScript, so a JSON parse can return a value that is close but wrong with no error raised. Store and compare IDs as strings, and use string columns in your database.
Do I need the user ID to download an Instagram post?
No. Downloading works from the post URL, not from an account identifier, so the two workflows are unrelated. Reels, photos and stories each have their own public URL that a downloader takes directly. Resolve a user ID when you are building an API integration, not when you want to save a single piece of content.
Which permissions does the Business Discovery call need?
Meta documents a Facebook User access token with instagram_basic, instagram_manage_insights and pages_read_engagement. If the token's user received their Page role through Business Manager, ads_management or ads_read is also required. Check Meta's live reference before building, since permission requirements have changed across API versions before.