Twitter Image and Video Search: What Works and What Doesn't

9 min readSocialAPI Engineering

Twitter Image and Video Search: What Works and What Doesn't

Two different things get called "Twitter image search", and only one of them is possible.

Finding posts that contain images — filtering search results down to media. This works well.

Finding a post from an image you already have — reverse image search. ★This does not exist on X.★

Worth separating them up front, because a lot of time gets wasted looking for a feature that isn't there.


Filtering search to media

The operators are simple and they combine with everything else:

Operator Result
filter:media Posts with any image or video
filter:images Images only
filter:videos Video only
filter:links Posts containing links
-filter:images Excludes images

Combine them with anything from the full operator set:

from:nasa filter:images min_faves:500
"product launch" filter:videos since:2026-08-01
#conference2026 filter:images -filter:retweets

⚠️ One quirk worth knowing: the Media tab often returns more results than Latest or Top for the same query. We measured this on an identical query — Latest 22, Top 20, Media 48. It draws from a differently-shaped index rather than filtering the same result set, so if a media search looks empty, try the tab before concluding there's nothing there.


Reverse image search doesn't exist on X

There is no way to upload an image to X and find posts containing it. No operator, no interface feature, no API endpoint.

What people do instead:

  • Google Images or TinEye on the image file. They index some X media, so this sometimes finds the post. Coverage is thin and getting thinner.
  • Search the text around it. If you have a screenshot, searching an exact phrase from it in quotes finds the original far more reliably than any image approach.
  • Search the account plus a date range. If you know who posted it and roughly when, from:account filter:images since: until: narrows it to a browsable set fast.

★The text route beats the image route almost every time.★ A distinctive quoted phrase is a much stronger search key than an image X won't let you search by.

And if what you actually want is an account's media in bulk rather than one particular post, that's a direct call rather than a search problem.


Pulling media programmatically

If you want an account's images or video rather than a search, that's a direct call:

import requests

BASE = "https://api.socialapi.tech"
KEY  = "your_api_key"
HDRS = {"X-API-Key": KEY}

def get_media(username, limit=50):
    r = requests.get(
        f"{BASE}/v1/user/media",
        params={"username": username, "limit": limit},
        headers=HDRS,
        timeout=60,
    )
    r.raise_for_status()
    return r.json()["data"]

for post in get_media("nasa", limit=20):
    print(f"{post['created_at']}  {post['like_count']:>6} likes  {post['text'][:50]}")

There are also separate calls for photos and videos specifically, if you want one without the other.

Downloading the files themselves is a second step — post objects carry the URLs, and you fetch those separately. Note that images and video arrive in two separate fields: photos is a list of URLs, videos is a list of objects.

import pathlib

def download_photos(username, out_dir="media", limit=50):
    out = pathlib.Path(out_dir)
    out.mkdir(exist_ok=True)

    saved = 0
    for post in get_media(username, limit=limit):
        for i, url in enumerate(post.get("photos", [])):
            ext = url.split("?")[0].rsplit(".", 1)[-1][:4] or "jpg"
            path = out / f"{post['id']}_{i}.{ext}"
            if path.exists():
                continue                      # already have it
            resp = requests.get(url, timeout=60)
            if resp.ok:
                path.write_bytes(resp.content)
                saved += 1
    return saved

print(f"saved {download_photos('nasa', limit=20)} files")

⚠️ Don't assume a single combined media field. Photos and video are structured differently — a list of URL strings versus a list of objects — so code that iterates one shape over both silently returns nothing for the other.

⚠️ On rights: being able to download something doesn't mean you can republish it. Images and video on X belong to whoever made them. Downloading for analysis is one thing; reusing in your own material is a licensing question, and "it was public" is not a defence.


Questions people ask

How do I search for images on Twitter? Add filter:images to your query, or use the Media tab after searching.

Can I do a reverse image search on Twitter? No. X has no reverse image search. Try Google Images on the file, or search an exact phrase from the image's text.

How do I find a tweet from a screenshot? Search a distinctive sentence from it in quotes. Far more reliable than trying to search by the image.

How do I search for videos on Twitter? filter:videos, optionally combined with from: or a date range.

How do I see all photos from an account? The Media tab on their profile, or a media call if you're doing it programmatically.

Can I download Twitter images? Individually, yes — right-click and save. In bulk, programmatically via the media URLs on each post. Note that downloading and republishing are different things.

How do I download Twitter videos? Video URLs come with the post data. Third-party downloaders exist too, with the usual caution about what you're pasting a link into.

Why does my media search show no results? Try a different tab — Media often returns more than Latest for the same query. Also check the operator spelling: filter:images, not filter:image.

Can I search GIFs? GIFs on X are technically short videos, so filter:videos catches them. There's no GIF-specific operator.

How do I find the original poster of an image? Search exact text from the post if you have it. If not, and Google Images doesn't find it, there often isn't a reliable route.

Can I search images by content? No — X doesn't index what's in an image. You're searching the text of posts that happen to contain images.

How many images can a post have? Up to four images, or one video, per post.

Can I get image URLs from the API? Yes — they come with the post objects, in a photos list. Video is a separate videos field with a different shape, so handle them separately.

What resolution are the images? Original upload resolution is generally available; some URLs carry size parameters you can adjust.

Can I search for images by date? Yes — combine filter:images with since: and until:, same as any other date search.

Do deleted images stay accessible? No. When a post is deleted its media goes with it.

Can I search for images in replies? filter:images applies to replies too. Add filter:replies to restrict to them.

How do I monitor an account's new images? Poll their media on a schedule and compare against what you've already seen — the same shape as any monitoring setup.

Can I search images by hashtag? Yes — #hashtag filter:images.

Is there an API for Twitter images? Media comes back as part of post data rather than as a separate image service. You get the URLs and fetch the files yourself.

How do I search for images on Twitter? Add filter:images to a search query. ★It narrows to posts carrying images★, not to the image content itself.

Can I reverse image search a tweet? Not within X. ★Take the image URL to a general reverse-image engine★ — the platform indexes posts, not pictures.

Is there a Twitter media viewer? Any tool showing an account's media tab is one. ★The media timeline is a standard, public view.★

How do I get a profile picture at full size? The profile returns the image URL, usually with a size suffix you can adjust. ★It is a public field like any other.★

Can I download images from a post? The URLs come with the post data; ★fetching the files is a separate step you control★.

Does image search find text inside images? No. ★Search matches post text, not what is written in a picture★ — a common and costly assumption.

How do I see likes on Twitter? The likes tab on a profile — ★though X restricted programmatic access to liker lists in 2023★.

Does Twitter have profile views? Profile visits appear in your own analytics as a count — ★never as identities★ — the rule.

How do I find an account's photos? Use the media view, not the timeline — ★measured at zero overlap★ — why.

Can I search for images by content? ★No — search matches text only.★ Take the image URL to a general reverse-image engine instead.

How do I find a specific image someone posted? Search the post's wording, ★not the image★ — the text around it is what is indexed.

Are images searchable by filename? No. ★Filenames are not exposed or indexed.★

Can I find deleted images? Only in an archive that captured them — what survives deletion.

Do GIFs show up in image search? They generally come through the video shape — ★check the type field rather than assuming★.

How do I get images from many accounts? Page each account's media view — ★per account, since media views are not batched★.

Can I see who saved my image? ★No — bookmarking is private★, and downloads are invisible.

Does an image count as media for filters? Yes — filter:media covers images and video — ★use filter:images to narrow further★.

Why does my media search miss posts? ★Because the media views are separate indexes★ — filtering a timeline is the wrong tool.


If you're collecting media

The pattern is two-stage: get the posts with their media URLs, then fetch the files. Deduplicate on post ID rather than filename — the same image can appear under different URLs.

Our API returns photos and videos with every post, plus dedicated calls for an account's photos or videos specifically. Read-only, flat price per call, cursor-based paging, no rate limit of your own to manage.

Related reading: every search operator that still works · finding old posts · monitoring accounts for new posts.