"TikTok image search" means three different things, and each one has a different answer. TikTok has a visual search of its own: a camera icon that finds products from a photo. TikTok has no reverse image search for identifying a person from their face, whatever the results above this page suggest. And TikTok does let you search photo posts and slideshows by keyword, in the app and through an API, which is the one most marketers and developers are after. All three are below, in that order.

TikTok's image search in the app, and what it does

TikTok's image search is a shopping feature. Open the Shop tab, tap the camera icon in the search bar, then take a photo or pick one from your camera roll. TikTok matches it against product listings and shows you things you can buy. It does not search videos, captions or accounts.

TikTok started testing it in June 2024 and rolled it out to users in the US and Southeast Asia, the two markets where TikTok Shop has the most traction. eMarketer read it as a move on Google's search share.

A second feature also gets called visual search: visual search tags. Pause a post, tap Find Similar, and TikTok identifies objects in the frame and offers similar posts under a Top tab and products under a Shop tab. Same object recognition, pointed at the feed instead of the camera.

Turning visual search off

The tags come from a toggle, not from your account settings generally. Go to your profile, open the menu, then Settings and privacy → Playback, and switch off Display object tags. The Shop camera icon is not something you can hide; it is part of the Shop tab's search bar.

What neither feature does: find the original post an image came from, or tell you who is in it. For that, keep reading.

Reverse image search to identify a TikTok user

TikTok does not offer this, and there is no sign it plans to. You cannot upload a face and get an account.

Third-party face-search sites fill the gap by scraping profile pictures and running face recognition over them. Search4faces publishes its own numbers on its TikTok page: 125,443,334 avatars indexed, 18.38% of them processed, and a 10.52% rate of successful searches, from a crawl it dates to 2021. Nine searches in ten return nothing, against a five-year-old index.

The legal position is worse than the hit rate. Scraping profile photos to build a face database is what got Clearview AI fined €30.5 million by the Dutch data protection authority in September 2024. Under GDPR a face template is special-category data, and Illinois, Texas and Washington have their own biometric privacy statutes. TikTok's terms also prohibit scraping the service. We are not recommending any of these sites.

If you have a screenshot of a post rather than a face, the ordinary tools work. Google Lens and TinEye find reposts of the same image elsewhere on the web, the creator's handle is usually burned into the TikTok watermark, and if you can read any caption text, searching those exact words on TikTok beats all of it.

Searching TikTok photos and slideshows by keyword

This is the useful one. TikTok indexes photo posts as their own search channel. Search any keyword in the app, then tap Photos in the row of tabs next to Top, Videos and Users, and you get slideshows only. It is a separate index, not a filter over video results.

Pull the same tab through an API and the response labels itself: feedback_type comes back as photo_tab and the request's search_channel is mt_photo. Video search and photo search return different posts for the same word.

That matters because photo posts behave differently from video. People save them. In our pull for study notes, the top slideshow banked 361,667 saves against 4.45 million plays, which is 81 saves per 1,000 plays. Video rarely does that, because a slideshow is a reference you come back to.

The TikTok photo API: what a result looks like

TokConnect's 27th tool is search_photos. It takes keyword, count (1 to 20), offset and search_id, and hands back one native page of TikTok's photo tab. Here is the first result for study notes on 20 September 2026, trimmed:

{
 "aweme_type": 150,
 "aweme_id": "7525432200888651026",
 "desc": "#studytok #college #school #student #university #StudyTips #math #mathnotes",
 "create_time": 1752151226,
 "image_post_info": {
   "title": "Follow for part II ✨",
   "images": [ /* 5 slides, in display order */ ]
 },
 "statistics": {
   "play_count": 4454690, "digg_count": 493304, "comment_count": 1081,
   "share_count": 41467, "collect_count": 361667, "download_count": 90274
 },
 "author": {"uid": "7475894172596765717", "nickname": "mathwithjuli",
            "search_user_desc": "mathwithjuli"},
 "music": {"title": "party 4 u", "author": "luca"}
}

Data: TikTok photo search via TokConnect, pulled 20 September 2026. Open the snapshot. Image URLs are stripped from our snapshots because they expire.

Four things to know before you build on it. aweme_type: 150 is the photo-post marker. image_post_info.title is the headline drawn on the slide, which is separate from desc and often the better text to mine. collect_count is saves, the metric that makes photo posts worth tracking. And create_time is a Unix timestamp, here 10 July 2025.

The author object is inconsistent, and it will bite you. Some items carry the full profile with unique_id and follower_count; others carry a search stub where nickname is the display name and the handle sits in search_user_desc. Read both. video_detail on the same aweme_id returns the normalised version with photoPost: true, authorUniqueId and an imagePost block, so it is worth a second call when you need clean author fields.

Paging

Take cursor from the response and send it as offset; take log_pb.impr_id and send it as search_id; keep going while has_more is 1. A real pair of pages:

CallReturnedcursorhas_morelog_pb.impr_id
{"keyword":"study notes","count":5}25120260920150719AC7B813B01645C17638F
{…,"offset":5,"search_id":"…17638F"}310120260920150815AC7B813B01645C176AE0

Data: TokConnect, 20 September 2026. Open the snapshot.

Two traps in that table. cursor advances by the requested count, not the number of items you got, so asking for 5 and receiving 2 still moves you to offset 5. And count is a ceiling: a request for 20 returned 11, with response_cropped: 1 flagging that TikTok trimmed the page. Read what came back, never what you asked for. The same contract governs video search, covered in the search API guide.

Calling it from Python

Any MCP client works. With the official mcp package this is about twenty lines:

import asyncio, json, os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

URL = "https://mcp.tokconnect.com/mcp"
AUTH = {"Authorization": f"Bearer {os.environ['TOKCONNECT_KEY']}"}

async def photos(keyword, pages=3, count=20):
    async with streamablehttp_client(URL, headers=AUTH) as (r, w, _):
        async with ClientSession(r, w) as s:
            await s.initialize()
            args, out = {"keyword": keyword, "count": count}, []
            for _ in range(pages):
                page = json.loads(
                    (await s.call_tool("search_photos", args)).content[0].text)
                out += page["search_item_list"]
                if not page.get("has_more"):
                    break
                args |= {"offset": page["cursor"],
                         "search_id": page["log_pb"]["impr_id"]}
            return out

for it in asyncio.run(photos("study notes")):
    a = it["aweme_info"]
    author = a["author"].get("unique_id") or a["author"].get("search_user_desc")
    print(f'{a["statistics"]["collect_count"]:>8,} saves  '
          f'{len(a["image_post_info"]["images"]):>2} slides  @{author}')
Using mcp 2.x?

The example uses the Python SDK's 1.x line. In mcp 2.0 and later the helper is streamable_http_client, the headers move onto an httpx2.AsyncClient passed as http_client, and the context manager yields two streams instead of three:

import httpx2
from mcp.client.streamable_http import streamable_http_client

async with streamable_http_client(
        URL, http_client=httpx2.AsyncClient(headers=AUTH)) as (read, write):
    async with ClientSession(read, write) as session:
        ...

One call is one credit, the first 100 are free, and the pricing page has the rest. Client configs for Claude, Cursor and the CLIs are in the MCP guide.

Three things worth building on it

1. A slideshow trend tracker for one niche

Run the same keyword weekly, store aweme_id, create_time and collect_count, and diff the ID set. New IDs entering the first page are the posts TikTok is currently promoting for that search. Our single page for study notes held eleven posts spanning October 2023 to September 2026, six of them from 2026, so the tab mixes evergreen winners with fresh entrants. The movement is the signal, not the snapshot.

2. A saves-per-play leaderboard

Divide collect_count by play_count and you get a reference-value score that ignores how big the account is. For study notes:

AccountSaves per 1,000 playsPlaysSavesSlidesPosted
@mathwithjuli81.24,454,690361,667510 Jul 2025
@studytipsforallx69.8324,82422,684623 Apr 2026
@foodforthought_mm37.0136,3255,0461114 Oct 2023
@kiyolovesmiso25.58,362,144213,329123 Mar 2025
@faeriin18.0321,1375,7881113 Nov 2023
@romcomlifee9.8220,8452,168230 Sep 2024

Data: TokConnect search_photos, keyword "study notes", pulled 20 September 2026. Open the snapshot. Saves per 1,000 plays is collect_count ÷ play_count × 1000.

Note what the ranking does to the biggest post. @kiyolovesmiso has nearly twice the plays of everyone else combined and lands fourth, because a single-slide post gets watched and scrolled past. The multi-slide posts get kept.

3. A caption-pattern miner

Photo posts carry two pieces of text, and the on-slide title is the one worth studying. In our book recommendations pull, five of the nine posts filled it, and four of those five put a piece of the search phrase in it: "Book recommendations 🎀📖", "book recommendations 📚❣️", "Healing Fiction Recommendations 📚❤️" and "Top books of 2026". The fifth went the other way with "Omfg, these books were WILD AF!" and still cleared 923,220 plays. Pull a hundred titles for your niche, count the openers, and you have the niche's actual hook formula instead of a guess.

Try this prompt in Claude, ChatGPT or Cursor with TokConnect connected

Search TikTok photo posts for "study notes" and pull three pages. For each post give me the on-slide title, the caption, the slide count, plays, and saves per 1,000 plays. Sort by saves per 1,000 plays, then tell me what the top five have in common that the bottom five don't.

Do the scrapers return photo posts?

Mostly yes, if you feed them a URL or a profile. Keyword search of the photo tab is the part that is hard to find.

ToolPhoto posts?Priced at
Apify TikTok Scraper (clockworks)Yes. Output carries isSlideshow and slideshowImageLinks, with a shouldDownloadSlideshowImages inputFrom $1.70 per 1,000 results
Apify TikTok Photo Scraper (scrapingmonkey)Yes, and photo-native: images.url, images.width, images.height, image_coverFrom $1.00 per 1,000 results
Bright Data TikTok PostsNot documented. The published schema is video shaped (video_url, video_duration) with no image or carousel field$1.50 per 1,000 records, 5,000 free a month
TokConnect search_photosYes, as TikTok's own photo tab page, by keyword1 credit per call, 100 free

Bright Data's posts dataset advertises 43 fields behind a data dictionary we could not read, so a carousel field may exist without being documented. Both Apify actors normalise TikTok's payload, so you get their field names, not aweme_type and image_post_info. Wanting the raw shape, or starting from a keyword rather than a list of URLs, is the gap. More trade-offs in the scraper guide and the map of every TikTok API.

If you are here to make slideshows rather than analyse them, the slideshow guide and slideshow ideas are the better pages. If you are building, the developer overview has the rest of the toolset.

Frequently asked questions

Can I do an image search on TikTok?

Yes, but only for shopping. Open the Shop tab, tap the camera icon in the search bar, and take or upload a photo; TikTok matches it against product listings. It is available to users in the US and Southeast Asia. It does not search videos, captions or accounts, and it will not find the post an image came from.

How to find a TikTok with a picture?

TikTok itself cannot do this. If you have a screenshot of the post, run it through Google Lens or TinEye to find reposts elsewhere, and check the corner of the image for TikTok's watermark, which carries the creator's handle. If you can read any caption or on-screen text, searching those exact words in TikTok's search bar is the fastest route. To find photo posts on a topic rather than one specific post, use the Photos tab in TikTok search.

Can I find a TikTok user using their picture?

Not through TikTok. Third-party face-search sites scrape profile pictures and run face recognition over them, and they are both unreliable and legally risky: one of them publishes a 10.52% success rate against a crawl it dates to 2021, and Clearview AI was fined €30.5 million for building the same kind of database. We do not recommend them.

Is there a TikTok photo API?

There is no official one. TikTok's Research API queries videos only, and the Display and Content Posting APIs do not search. Scrapers return photo posts if you hand them a URL or a profile. For keyword search of TikTok's photo tab, search_photos returns one native page per call, with slide order, statistics and author fields, and pages with offset plus search_id. See the search API guide.

Sources and data