I'm building Estimatik, an AI tool that estimates resale value from a photo. You snap a picture of something you found at a thrift store, and it tells you what it's worth on eBay.
The core loop is simple: GPT-4o identifies the item, the eBay API fetches real listing prices, and you get a price range.
It worked great for common stuff. Sneakers, iPhones, Nintendo consoles. Accurate every time.
Then I tested an antique Victorian beaded handbag.
GPT-4o identified it as "antique beaded handbag." Generic. The eBay text search returned cheap modern beaded bags at $30-$50. Meanwhile, the exact same type of bag was listed at $1,495 on eBay.
The problem was obvious: translating an image into text, then searching by text, loses everything that makes an item unique. Color, pattern, material, era, craftsmanship. None of that survives a text query.
I thought I'd need to rewrite my entire prompt engineering. Then I found something in the eBay Browse API docs that I'd never seen anyone mention.
eBay has a visual search endpoint.
POST /item_summary/search_by_image
You send the image as Base64. eBay matches it visually against their entire catalog. No text translation needed.
I already had the image in Base64, it's what I send to GPT-4o. One function, same token, same filters. Took 30 minutes to integrate.
Results:
Victorian handbag BEFORE (text search): $62 to $80, 18 listings
Victorian handbag AFTER (visual search): $39 to $330, 46 listings
NES console with controllers BEFORE: $25 to $50, 29 listings
NES console with controllers AFTER: $67 to $200, 48 listings
The visual search doesn't just find more listings. It finds the RIGHT listings. eBay's image matching algorithm is trained on their own catalog. It knows what a Victorian micro-beaded silver plate purse looks like better than any text query ever will.
Now my system uses visual search as the primary method. Text-based search is the fallback if visual returns nothing.
The lesson for anyone building on top of eBay data:
Stop converting images to text to search for prices. If you have the image, send the image. The Browse API visual search endpoint is free with your existing OAuth token and it's dramatically more accurate for anything that's hard to describe in words. Vintage items, art, collectibles, handmade goods, rare variants.
The documentation is public but I've never seen it mentioned in any tutorial, blog post, or indie hacker thread about eBay integrations. Hopefully this saves someone else the weeks I spent fighting with text queries.
Estimatik is live at estimatik.com. Free to try, no credit card needed.
Happy to answer questions about the eBay API integration or the pricing logic.
Visual search improved matching a lot.
Now the next challenge is pricing truth vs listing fantasy.
If you were building this, would you rely on sold comps, active listings, or another model?
Visual search is a total game-changer for high-variance niches like antiques. Moving from 'text search' to 'image matching' is a massive trust signal for your users.
Regarding your question: Sold comps are the only 'truth.' Active listings are just dreams.
Since you’ve nailed the tech, you should battle-test Estimatik in the Validation Arena (tokyolore.com). 🏁
$19 to enter, 30 days to get real users paying for those estimates.
$0 pool right now, and the winner gets a Tokyo trip! 🏆
Thanks. Focused on building organically for now.