$echo '{
< "sourceMode": "list",
< "researchBrief": "Beginner-friendly Python web scraping tutorials (requests, BeautifulSoup, Scrapy, Playwright) that teach a complete project step by step",
< "searchQueries": [
< "python web scraping tutorial",
< "beautifulsoup tutorial",
< "scrapy tutorial for beginners"
< ],
< "maxResultsPerQuery": 30,
< "maxDiscoveryChargeUsd": 0.5,
< "discoveryInput": {},
< "proxyConfiguration": {
< "useApifyProxy": false
< },
< "itemsList": [
< {
< "id": "k3Vq9TzP1aE",
< "title": "Web Scraping with Python - BeautifulSoup Tutorial for Beginners",
< "url": "https://www.youtube.com/watch?v=k3Vq9TzP1aE",
< "thumbnailUrl": "https://i.ytimg.com/vi/k3Vq9TzP1aE/maxresdefault.jpg",
< "viewCount": 312450,
< "date": "8 months ago",
< "likes": 9870,
< "commentsCount": 412,
< "duration": "24:18",
< "channelName": "Code with Mira",
< "channelUrl": "https://www.youtube.com/@codewithmira",
< "numberOfSubscribers": 48200,
< "channelTotalVideos": 96,
< "channelLocation": "Canada",
< "isMonetized": true,
< "commentsTurnedOff": false,
< "fromYTUrl": "https://www.youtube.com/results?search_query=python+web+scraping+tutorial",
< "text": "Learn web scraping with Python from zero: we download a page with requests, parse it with BeautifulSoup and save the results to CSV. Perfect if you have never scraped a website before.\\n\\n00:00 Intro\\n01:12 Installing requests and BeautifulSoup\\n05:40 Finding elements with CSS selectors\\n14:05 Handling pagination\\n21:30 Saving to CSV\\n\\n#python #webscraping #beautifulsoup",
< "subtitles": [
< {
< "language": "en",
< "type": "auto_generated",
< "srt": "1\\n00:00:01,000 --> 00:00:04,500\\nin this video we build a web scraper in Python from scratch\\n\\n2\\n00:01:12,000 --> 00:01:16,000\\nfirst install requests and BeautifulSoup with pip\\n\\n3\\n00:05:40,000 --> 00:05:45,000\\nBeautifulSoup lets you find elements with CSS selectors\\n\\n4\\n00:14:05,000 --> 00:14:09,000\\nto handle pagination we follow the next page link in a loop\\n\\n5\\n00:21:30,000 --> 00:21:35,000\\nfinally we write every product row to a CSV file"
< }
< ]
< },
< {
< "id": "Rw8nD2xYp4Q",
< "title": "Build a Price Tracker in Python (requests + BeautifulSoup) - Full Project",
< "url": "https://www.youtube.com/watch?v=Rw8nD2xYp4Q&list=PLx9sampleplaylist&index=3",
< "viewCount": 41700,
< "date": "3 weeks ago",
< "likes": 2150,
< "commentsCount": 133,
< "duration": "38:05",
< "channelName": "Byte Sized Dev",
< "channelUrl": "https://www.youtube.com/@bytesizeddev",
< "numberOfSubscribers": 8900,
< "channelTotalVideos": 41,
< "fromYTUrl": "https://www.youtube.com/results?search_query=python+web+scraping+tutorial",
< "text": "A complete beginner project: a Python price tracker that checks a product page every day and emails you when the price drops. Step by step with requests, BeautifulSoup and a scheduler.\\n\\n00:00 What we build\\n03:20 Scraping the price\\n17:45 Storing history\\n29:10 Email alerts",
< "subtitles": [
< {
< "language": "en",
< "type": "auto_generated",
< "srt": "today we build a complete price tracker project step by step\\nwe fetch the product page with requests\\nthen BeautifulSoup pulls the price out of the HTML\\nwe store every price in a small SQLite table\\nand send an email when the price drops below your target"
< }
< ]
< },
< {
< "id": "Tq4LmZ8sV0c",
< "title": "Scrapy vs Playwright vs BeautifulSoup: which Python scraper should you use?",
< "url": "https://www.youtube.com/watch?v=Tq4LmZ8sV0c",
< "viewCount": 88300,
< "date": "2026-07-02",
< "likes": 3410,
< "commentsCount": 198,
< "duration": "16:42",
< "channelName": "DataLane",
< "channelUrl": "https://www.youtube.com/@datalane",
< "numberOfSubscribers": 126000,
< "channelTotalVideos": 212,
< "fromYTUrl": "https://www.youtube.com/results?search_query=beautifulsoup+tutorial",
< "text": "Three Python scraping tools compared on the same site: speed, JavaScript support and how much code each needs. Which one should a beginner learn first?"
< },
< {
< "id": "Hy7cXe2KkPs",
< "title": "Playwright Python Tutorial: Scrape JavaScript Websites",
< "url": "https://www.youtube.com/watch?v=Hy7cXe2KkPs",
< "viewCount": 57900,
< "date": "5 months ago",
< "likes": 1890,
< "commentsCount": 76,
< "duration": "19:57",
< "channelName": "Automate Everything",
< "channelUrl": "https://www.youtube.com/@automateeverything",
< "numberOfSubscribers": 212000,
< "channelTotalVideos": 318,
< "fromYTUrl": "https://www.youtube.com/results?search_query=beautifulsoup+tutorial",
< "text": "When requests and BeautifulSoup return an empty page, the site renders with JavaScript. This tutorial shows how Playwright for Python opens a real browser, waits for the content and extracts it."
< },
< {
< "id": "Lf0BeatsM1x",
< "title": "lofi beats to code to - 3 hour mix",
< "url": "https://www.youtube.com/watch?v=Lf0BeatsM1x",
< "viewCount": 902000,
< "date": "1 year ago",
< "likes": 21400,
< "commentsCount": 640,
< "duration": "3:02:11",
< "channelName": "Chill Hours",
< "channelUrl": "https://www.youtube.com/@chillhours",
< "numberOfSubscribers": 1450000,
< "fromYTUrl": "https://www.youtube.com/results?search_query=python+web+scraping+tutorial",
< "text": "Three hours of calm lofi beats for coding and studying."
< },
< {
< "id": "Sh0rtPy1lnR",
< "title": "One-line Python scraper #shorts",
< "url": "https://www.youtube.com/shorts/Sh0rtPy1lnR",
< "viewCount": 120500,
< "date": "2 weeks ago",
< "likes": 6100,
< "duration": "0:45",
< "channelName": "Byte Sized Dev",
< "numberOfSubscribers": 8900,
< "fromYTUrl": "https://www.youtube.com/results?search_query=python+web+scraping+tutorial"
< },
< {
< "url": "https://www.youtube.com/watch?v=Xx0Unavail1",
< "input": "https://www.youtube.com/watch?v=Xx0Unavail1",
< "error": "VIDEO_UNAVAILABLE",
< "note": "Video unavailable"
< }
< ]
<}' |
<apify call rich_minds/youtube-video-research-ai --silent --output-dataset