How to scrape Google Videos with Python

This guide shows how to scrape Google Videos with Python: call one endpoint, get each video as clean JSON, then save it to a CSV file. No browser automation, no parsing HTML.

3,000 free results / month, no card Title, channel, duration, date Direct video links and thumbnails
PULLED LIVE FROM THE API, JULY 20, 2026

One request, real response

The hard part of scraping the Google Videos tab yourself is driving a browser, dodging blocks, and parsing a page that keeps changing. Instead you send one HTTP request to a search endpoint and get clean JSON back, or the same rows as CSV. First a quick test with curl:

# one credit per successful search, however many videos come back; zero results cost nothing curl "https://crustapi.com/v1/search?type=videos&q=guitar tutorial" -H "x-api-key: YOUR_KEY"

Then the same call in Python with the requests library. Install it with pip install requests, drop in a key, and run:

# pip install requests, then run this file import requests resp = requests.get( "https://crustapi.com/v1/search", params={"type": "videos", "q": "guitar tutorial"}, headers={"x-api-key": "YOUR_KEY"}, ) data = resp.json() for video in data["videos"]: print(video["title"], video["channel"], video["videoUrl"])

The response is one JSON object. The searchParameters field echoes your query, and videos is the list of results. Here are the first two that came back, shown as CSV so they drop straight into Sheets or a database:

title,channel,duration,date,videoUrl "First Guitar Lesson for Complete Beginners (Start Playing in ...","Good Guitarist","11:14","Jan 3, 2026","https://www.youtube.com/watch?v=jh7_FRlFPw4" "Guitar Lesson 1 - Absolute Beginner? Start Here! [Free 10 Day ...","Andy Guitar","16:11","Sep 2, 2016","https://www.youtube.com/watch?v=BBz-Jyr23M4"

Each request returns one page of results. To pull more, pass a page number and loop, collecting every page into one list:

# page through more results import requests all_videos = [] for page in range(1, 4): # pages 1, 2, 3 resp = requests.get( "https://crustapi.com/v1/search", params={"type": "videos", "q": "guitar tutorial", "page": page}, headers={"x-api-key": "YOUR_KEY"}, ) all_videos += resp.json()["videos"] print(len(all_videos), "videos")

Change q to any search you would type into the Videos tab, like python tutorial or how to change a tire.

WHAT EVERY VIDEO INCLUDES

The full record, ready to use

Every result comes complete, so you build a research set or a content feed with no second call. Here is one record as CSV, ready for Sheets or a database:

title,channel,source,duration,date,position,videoUrl,imageUrl "First Guitar Lesson for Complete Beginners (Start Playing in ...","Good Guitarist","YouTube","11:14","Jan 3, 2026",1,"https://www.youtube.com/watch?v=jh7_FRlFPw4","https://i.ytimg.com/vi/jh7_FRlFPw4/hqdefault.jpg"

Or the same record as JSON, exactly as the API returns it:

// one video in full { "title": "First Guitar Lesson for Complete Beginners (Start Playing in ...", "link": "https://www.youtube.com/watch?v=jh7_FRlFPw4", "snippet": "Just finished your first guitar lesson? Here's your next step - my FREE songbook. 15 iconic songs you can play starting with just 2 chords, ...", "imageUrl": "https://i.ytimg.com/vi/jh7_FRlFPw4/hqdefault.jpg", "videoUrl": "https://www.youtube.com/watch?v=jh7_FRlFPw4", "duration": "11:14", "source": "YouTube", "channel": "Good Guitarist", "date": "Jan 3, 2026", "position": 1 }
HOW IT COMPARES

vs writing your own scraper

You can build a video-results scraper with a headless browser and a parser, and plenty of tutorials show how. The trade is maintenance. Here is the difference in practice.

Writing it yourselfCrustAPI
SetupInstall a headless browser, handle blocks and page changesOne GET request, no browser
OutputParse the HTML yourself; fields break when the layout changesClean JSON from the API, or the same rows as CSV
MaintenanceFix the scraper each time the page changesWe keep it working
Free tierFree, but you pay in time and blocked requests3,000 results / month, no card
Cost modelServer, proxy, and developer timeOne credit per successful search, any number of videos; empty searches free
Storing the dataYours to manageNo storage limits. Export to CSV or a database
PRICING

One credit per search

Prepaid packs, and credits never expire: 25k for $49 · 100k for $149 · 500k for $549 · 2.5M for $1,999 · up to 250M, all self-serve, ex-tax. A search that returns results costs one credit, however many videos come back; a search that returns none costs nothing.

Run your first video search free
3,000 credits a month. No card, no contract.
Get started →
THE LAST STEP

Save the results to a CSV file

Because the response is plain JSON, Python's built-in csv module writes it to a file in a few lines. No extra libraries. This reads every video from the search and writes one row each:

# save every video to a CSV file with the built-in csv module import csv, requests data = requests.get( "https://crustapi.com/v1/search", params={"type": "videos", "q": "guitar tutorial"}, headers={"x-api-key": "YOUR_KEY"}, ).json() with open("videos.csv", "w", newline="") as f: writer = csv.writer(f) writer.writerow(["title", "channel", "duration", "date", "videoUrl"]) for v in data["videos"]: writer.writerow([v["title"], v["channel"], v.get("duration", ""), v.get("date", ""), v["videoUrl"]])

Open videos.csv in Sheets or Excel and you have a finished list. Swap the query, run it again, and append to build a bigger dataset.

Related: Google Videos Scraper · Google Search API · Google Images API · API docs

FAIR PLAY

When a different tool fits better: pulling a channel's full upload history, comment threads, or view counts is what the YouTube Data API is built for. This endpoint returns the public video results Google shows for a search, which is what most research and content work needs, but it is not the official YouTube API.

BEFORE YOU ASK

Common questions

WORKS WITH YOUR STACK

Try it on a search you know

3,000 free credits covers a real search. Run one query and look at the JSON that comes back.

Get 3,000 free credits
No credit card required