PrivateProfileNotFollowedException

The profile is private and this login does not follow it.

The error#

Profile {username} is private but not followed.
Private but not followed.
Profile {username}: private but not followed.

PrivateProfileNotFollowedException is a subclass of InstaloaderException. The first line is what the profile object raises. The shorter lines come from the CLI download path.

Posts of a private profile when you are not logged in are a different exception: LoginRequiredException with Login required to access the posts of private profile {username}.

What triggers it#

The profile is marked private, a session exists, and that session does not follow the account. Anonymous access does not take this branch. It asks you to log in first.

How to confirm#

Print the exception class. PrivateProfileNotFollowedException means the session is valid and the account is private. LoginRequiredException mentioning private profile means there was no session.

Fixes#

Follow the account from the user you pass to --login, then retry. instaloader will not download that profile's posts until the follow exists. Logging in as the account itself is a different check (Login as {username} required for saved posts).

There is no flag in these messages that turns a private profile into a public one.

SocialScrape#

Instagram profile is GET /v1/instagram/profile. A private account comes back with is_private true. Posts are GET /v1/instagram/profile/posts, and one post is GET /v1/instagram/post.

Failed requests cost 0 credits. New accounts get 100 credits on signup, no card. Codes are on errors.

Questions

Will SocialScrape download a private feed?

No. The profile endpoint still returns the public profile fields and sets is_private true.

Is this the same as ProfileNotExistsException?

No. That class means the username does not resolve.