The error#
NotFoundError formats its argument:
Requested {name} could not be foundThe default {name}, when the code raises NotFoundError() with no argument, is resource (gallery/image). Instagram raises NotFoundError("user") and NotFoundError("story"). TikTok raises NotFoundError("post"). X raises NotFoundError("user").
Passing False as the second argument skips the template and uses the text as-is. X does that with NotFoundError(user["message"], False) when the user payload already has a message.
NotFoundError is a subclass of ExtractionError. Its exit code is 4, the same as other extraction errors.
What triggers it#
The extractor asked for an object and the API said it was missing, or Extractor.request got HTTP 404 while notfound was set. A 404 in that helper raises NotFoundError with the subcategory name when notfound is True.
How to confirm#
The message starts with Requested and ends with could not be found, or it is the raw API message because fmt was false. A login redirect does not use this class.
Fixes#
Check the URL against the extractor's example in the module (Instagram examples look like https://www.instagram.com/USER/ and https://www.instagram.com/p/abcdefg/). A username that does not exist stays a not-found. Retrying it does not create the account. A 404 that is actually a login wall is the redirect page, not this one.
SocialScrape#
gallery-dl covers many sites SocialScrape does not. For Instagram, TikTok and X, the hosted calls are profile (GET /v1/instagram/profile), TikTok video (GET /v1/tiktok/video) and X post (GET /v1/twitter/tweet).
Failed requests cost 0 credits. New accounts get 100 credits on signup, no card.