Video & audio · Live on Apify

YouTube Search Results Scraper

Search YouTube by keyword and get each result as a row. You get the rank, title, channel, views and duration. No login or API key.

About $0.22 for 1,000 videos$0.00022 per video + $0.002 per run. Apify bills you, not us.One video in a run of its own: about $0.0022.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

queryapify tutorial
typevideo
videoId3rrpfW0bEdc

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: apify tutorial in Search queries. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Search public YouTube videos, channels and Shorts by keyword. Get a row for each result, with its query, rank, title and visible metadata. No login or YouTube API key is needed.

Data you get

  • The query and a rank for each delivered result.
  • Video or channel ID, title and public URL.
  • Visible channel name, view label, duration and publish label when available.
  • A thumbnail, description excerpt and fetch time when available.

Who uses it

YouTube creators

See which videos rank for the keywords you plan to use.

Influencer marketers

Find channels that make videos about your topic.

Short video teams

Study which Shorts show up for a topic.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.002Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Search result$0.00022 (from $0.00019 on paid Apify plans)One unique supported search card saved for one query. Duplicate IDs within a query are not charged again.

Examples

  • One video: about $0.0022.
  • 1,000 videos: about $0.22.
  • Every day 100 videos, for 30 days: about $0.72 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 22,000 videos.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

How many keywords can I search at once?

Up to 5 queries per run.

Can I get every video for a keyword?

No. YouTube controls how many pages it shows.

Do I get exact publish dates?

Not always. YouTube shows labels like 2 weeks ago, and missing dates stay empty.

Do I need a proxy?

No. No proxy setting is needed.

Do I need to sign in or provide a YouTube API key?

No. The Actor reads public anonymous search responses.

Does video search exclude Shorts?

No. Video search follows YouTube's video filter, which can include Shorts. Use type: "short" for the dedicated Shorts search.

Are channels and exact publish dates available for every Short?

No. Missing search metadata stays null. Exact dates are not inferred from relative labels.

Will the same input return the same order later?

It may change. Search is dynamic and session-dependent. Keep the fetch time with your results.

Do empty searches cost money?

The start fee applies. No result fee is charged when no rows are saved.

Details

Step by step on Apify
  1. Open Input.
  2. Keep queries as ["apify tutorial"] and maxResultsPerQuery as 20.
  3. Keep the default video search.
  4. Click Start.
  5. Open Search results to see the rows. Open Run summary to check each query.
Use cases
TaskInputKey fieldsNext step
Plan content around keywordsSeveral queries, type: "video"query, rank, title, viewsTextCompare rows in a spreadsheet.
Find public channelstype: "channel"channel.id, channel.name, urlReview the channel pages.
Study short-form topicstype: "short"title, url, viewsTextGroup titles by topic.
Tips for better results
  • Pick the Shorts type for Shorts only; video search may mix them in.
  • Use upload date and duration filters to narrow results.
  • Keep the fetch time; search order changes over time.
Limits and good to know
  • Search results vary by time, region, interface language and anonymous session. They may differ from a signed-in browser
  • The source can change or stop search pages. The Actor is limited to 10 pages per query, 60 requests including retries, 32 MiB of response data and 150 seconds of source work. Reaching an internal page/request/byte limit is a failed partial run, not a promise of full coverage
  • Rank excludes unsupported cards, ads, playlists and duplicate IDs. It is not a universal YouTube SEO rank
  • Shorts cards may omit channel, publish date and duration. These values stay null. No watch-page enrichment is performed
  • Text labels and snippets are capped at 1,024 UTF-8 bytes. Thumbnail URLs longer than 2,048 bytes are omitted
  • Visible counts may be rounded or localized. viewsText preserves them. Relative dates remain relative labels
  • The Actor uses public search metadata. It is not affiliated with or endorsed by YouTube. Use the data in line with YouTube terms and the rights of content owners

Troubleshooting

SymptomPossible reasonCheckAction
Empty Dataset with successful runNo matching cardsQuery status in Run summaryTry a broader query or remove filters.
INVALID_INPUT or INVALID_FILTER_COMBINATIONInvalid field or unsupported combinationQuery list, ranges, type and filtersUse an example above and change one field at a time.
CHARGE_LIMITMaximum run charge reachedSummary rows and your budgetIncrease the cap if you need more results.
SOURCE_ERROR / SOURCE_SCHEMA_CHANGEDSource unavailable or its card format changedRun reason and saved rowsRetry a small example later; report the run if it repeats.
SOURCE_DEADLINE / PAGE_LIMIT / BYTE_LIMITSource work exceeded a boundRequests and responseBytesReduce queries or results per query.
Null numeric viewsRounded/localized/missing countviewsTextUse the original label; do not replace null with zero.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. Some values are changed for privacy. In Excel or CSV each field is a column.

one result · JSON
{
  "query": "apify tutorial",
  "rank": 1,
  "type": "video",
  "videoId": "3rrpfW0bEdc",
  "url": "https://www.youtube.com/watch?v=3rrpfW0bEdc",
  "title": "Apify Tutorial For Beginners | How To Use Apify",
  "channel": {
    "id": "UCqD-h6ucBDUntfoapPyhp0Q",
    "name": "Example Channel",
    "url": "https://www.youtube.com/channel/UCqD-h6ucBDUntfoapPyhp0Q"
  },
  "views": 43453,
  "viewsText": "43,453 views",
  "publishedText": "3 years ago",
  "duration": "10:41",
  "isShort": false,
  "isLive": false,
  "thumbnail": "https://i.ytimg.com/vi/3rrpfW0bEdc/hq720.jpg?sqp=-oaymwEgCOgCEMoBSFXyq4qpAxIIARUAAIhCGAFwAcABBrgC8xg=&rs=AOn4CLABmbVCBBN5n5_SrWoZ0xIiumH7wQ",
  "descriptionSnippet": "Apify review: https://example.com/review/ Apify Tutorial For Beginners | How To Use Apify This is my video tutorial\u00a0...",
  "source": "YouTube",
  "fetchedAt": "2026-10-14T10:58:02.998Z"
}

Use it from code

Actor ID: cliqtomedia/youtube-search-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/youtube-search-scraper").call(run_input={
    "queries": [
        "apify tutorial"
    ],
    "maxResultsPerQuery": 20
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~youtube-search-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["apify tutorial"], "maxResultsPerQuery": 20}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/youtube-search-scraper")
result = tool.invoke({"run_input": {"queries": ["apify tutorial"], "maxResultsPerQuery": 20}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (17)
FieldTypeMeaning
querystringNormalized query that produced this card.
rankintegerOne-based position among delivered unique supported cards for this query.
typestringvideo, channel or short card type.
videoIdstringYouTube video ID, null for a channel card.
urlstringCanonical public video, Shorts or channel URL.
titlestringTitle shown by the search card.
viewsintegerExact visible English view count; null for rounded, localized or unavailable values.
viewsTextstringOriginal visible view-count label, including rounded counts.
publishedTextstringRelative publish label from the card; no invented exact date.
durationstringVisible MM:SS or HH:MM:SS label; null when unavailable.
isShortbooleanWhether the card identifies a Short.
isLivebooleanTrue for a live-now video badge; null for channels and Shorts.
thumbnailstringPublic thumbnail URL from the card, if available.
descriptionSnippetstringVisible description excerpt, not the full video description.
sourcestringYouTube source identifier.
fetchedAtstringUTC ISO timestamp when this page was received.
channelobjectChannel metadata exposed by this card. Shorts often omit this object’s values.
Input settings (8)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Search queries requiredqueriesarray["apify tutorial"]
Results per querymaxResultsPerQueryinteger20
Countrycountrystring"US"
Languagelanguagestring"en"
Result typetypestring"video"
Upload dateuploadDatestring"all"
Video durationdurationstring"all"
Sort ordersortBystring"relevance"

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure