TinyFish × VideoDB: The Internet, Finally Visible to Your Agents
Half of the internet’s traffic today comes from AI agents. And yet, your agent can access barely 10% of what’s actually out there, and understand even less of what it does find.
That’s not a small gap. That’s most of the internet.
Say you want to build an agent that follows a football tournament for you. Not just scores, but the actual story of each match. Who pressed in the second half, which goalkeeper was having a nightmare, the goal that came out of nowhere in the 87th minute. You don’t want a Wikipedia summary. You want to feel like you watched it.
So you send your agent out.
It goes looking for the match. Half the good sources are behind login screens. The highlight reels it finds are on YouTube, returned as URLs it cannot see inside. It comes back with a final scoreline and maybe a text recap pulled from a surface-level search. Technically, it did its job. But you wanted the 89th minute. The chip over the keeper. The red card that changed everything. Instead you got a box score.
This is the exact problem. Two walls, back to back.
The first wall is access. Most of the internet is not publicly scrapable. It lives behind login screens, paywalls, dynamic pages that need a real browser to render, forms that need to be filled. Your agent knocks, and the door doesn’t open.
The second wall is comprehension. Even when your agent gets through, video is a black box. A YouTube URL is not information. The transcript might tell you a commentator shouted “what a goal,” but it cannot tell you that the striker received the ball with his back to goal, turned two defenders, and curled it into the top corner. That lives in the frame. And your agent cannot see frames.
To close that loop, we built a World Cup agent with TinyFish and VideoDB: TinyFish gets the agent to the right parts of the web, and VideoDB lets it understand what is inside the video.
Ask for goals, cards, fouls, or penalties from a match, and the agent turns open-web access plus video comprehension into a reel you can actually watch.
TinyFish: Opening Every Door
TinyFish gives your agent the ability to navigate the web the way a human does. Not scraping surface HTML, but actually going in. Logging into sites, clicking through pages, filling forms, handling dynamic content, and returning structured data from wherever it lands.
You give it a URL and a goal in plain English. It figures out the rest.
from tinyfish import TinyFish, CompleteEvent
tf = TinyFish()
GOAL = """
Go to YouTube and search for "Manchester United full match 2024 2025".
Find up to 3 complete match videos. For each collect the title, URL,
channel, duration, opponent, and competition.
Return only JSON.
"""
with tf.agent.stream(url="https://www.youtube.com/", goal=GOAL) as stream:
for event in stream:
if isinstance(event, CompleteEvent):
result = event.result_json
Your agent is no longer knocking on doors. It is walking through them.
VideoDB: Actually Seeing What’s Inside
Now your agent has the match URLs. But a URL is still just a pointer to a file it cannot read.
VideoDB ingests that video and turns it into something an agent can actually work with. It indexes the video at the scene level, running multimodal AI over sampled frames and generating descriptions of what is visually happening, moment by moment. Not what the commentator said. What was in the frame.
You craft a prompt that tells it what to look for, and it comes back with timestamped, searchable, retrievable scenes.
from videodb import SceneExtractionType
scene_index_id = match_video.index_scenes(
prompt="""
You are analyzing a football match. Describe what is happening concisely.
Use the prefix CHANCE: when the ball is near the penalty box with an attacker contesting it.
Use YELLOW CARD: or RED CARD: when a card is shown.
Use PENALTY: when a penalty is being taken.
""",
)
Once indexed, your agent can search the video like a database.
highlights = match_video.search(
query="CHANCE ball near penalty box shot attempt",
search_type=SearchType.semantic,
index_type=IndexType.scene,
scene_index_id=scene_index_id,
)
highlight_reel = highlights.compile()
It gets back playable clips. Actual video. Not a transcript, not a summary. The moments themselves, stitched into a reel, ready to watch or pass downstream to another agent.
The Full Loop in Practice
Put them together and the agent’s football research goes from a box score to this: TinyFish finds the match on YouTube. VideoDB ingests it, scenes it, and pulls every goal attempt, every card, every penalty. The agent compiles a highlight reel, attaches match context, and delivers it. You get what you actually asked for.
We built a live version of exactly this. You can run any query, something like “Show me every yellow card from Brazil vs Morocco,” and the agent will find the match footage with TinyFish, process the video with VideoDB, extract all the key moments, and return a compiled clip alongside a structured match summary.
The live app lets you turn a one-off request into a scheduled briefing. Set it up once, and the agent keeps bringing the right moments back on schedule.
First, you connect the two APIs the agent needs: TinyFish for access, VideoDB for video understanding. Then you choose the inbox where the result should land, whether that is Telegram, Discord, or Slack.
From there, the prompt becomes a delivery rule. You pick the match query, the time, and the timezone. Every day on that schedule, the agent runs the loop on its own: find the right footage, understand the frames, cut the requested moments, and send the finished reel to your inbox.
That is a new way to consume the internet. The agent does the searching, watching, and clipping in the background, then delivers the finished clip directly to your inbox at the scheduled time.
It Is Not Just Football
These two walls appear everywhere agents go.
Imagine building a real estate research agent to find the best properties in a city. It can try to pull listings, but most property platforms require a login to see full details. TinyFish gets it in. Then the agent finds the walkthrough videos. The listing description says “spacious, sunlit living room with modern finishes.” The transcript of the walkthrough video says “here’s the beautiful living area.” Neither is useful. What is useful is what VideoDB sees: a narrow kitchen, windows facing a concrete wall, flooring that is vinyl pretending to be wood. The agent that can only read would believe the listing. The agent that can see would not.
The visual layer is often where the truth lives. Transcript gives you what people said about a thing. Scene indexing gives you the thing itself.
Agents now make up half the internet’s traffic. It is about time they could actually read it.
TinyFish and VideoDB do not just patch two separate problems. They close a loop. Access without comprehension is still blindness. Comprehension without access is still a locked door. Together, they are what it actually takes to send an agent into the internet and get something real back.