AI & documents · Live on Apify

RAG Web Search: Top Google Pages as Clean Markdown

Type a question or topic and get the top Google pages as clean text. Each page is one row with its link. It gives your model fresh web context in one step.

About $2.00 for 1,000 results$0.002 per result + $0 per run. Apify bills you, not us.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 actors
urlhttps://apify.com/actors
titleAutomate anything with Apify Actors · Apify

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 actors in Search query or URL. 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

Type a search query and get the top Google result pages as clean Markdown, plain text or HTML, one Dataset row per page. It is a RAG web search tool for LLM apps and AI agents: no login and no API key, and a typical run with 3 pages takes a few seconds and costs about $0.009.

  • Searches Google for your query in the country you choose.
  • Takes the organic results in order. Ads and Google's own pages are skipped. URLs are the real page addresses, not Google redirect links.
  • Opens each page with a normal HTTP request and keeps only the main content: no menus, footers, cookie banners or scripts.
  • Saves each readable page as one row with the content in one field: markdown, text or html.
  • Stops when it has the number of readable pages you asked for, or when the time budget ends.

Good for

  • Give an LLM or agent fresh web context for a question (retrieval-augmented generation).
  • Collect the readable text of the top results for a topic before chunking and embedding.
  • Read one known URL as Markdown inside the same workflow.

Not a good fit

  • No JavaScript rendering. Pages that build their text in the browser (many web apps, YouTube) come back as empty.
  • No login, cookies or paywall bypass. Such pages come back as login_required or paywall.
  • Up to 10 pages per run and English-language Google results. For more queries, start more runs.
  • PDF and other files are not converted (not_html row).

Who uses it

LLM app builders

Add fresh web pages to a prompt and show the link as the source.

AI agent developers

Give your agent one tool that searches and reads pages at once.

Researchers

Collect the readable text of top results for a topic before you embed it.

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
Search$0.003 (from $0.00255 on paid Apify plans)One answered request: a Google search (also when Google has no results) or one URL read.
Readable page$0.002 (from $0.0017 on paid Apify plans)One saved page with content (fetchStatus ok). Blocked, login, paywall and empty pages are free.

Examples

  • One result: about $0.002.
  • 1,000 results: about $2.00.
  • Every day 100 results, for 30 days: about $6.00 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 2,500 results.

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

Questions

Do I need a Google API key?

No. You do not need a key or a login.

Why is a page empty?

Some sites build their text with JavaScript. This tool does not run JavaScript, so it marks them as empty.

Does it give ads in the results?

No. Ads and Google's own pages are skipped. You get real page addresses.

Can it read PDF results?

No. PDF and other files are not converted. They get a not_html row.

Is the content complete and up to date?

It is the page as served at fetchedAt, main content only. Text that loads with JavaScript, comments and hidden blocks are not included. Some sites repeat a lead paragraph in their HTML; it then appears twice.

Can I search in other languages?

Google results are requested in English (hl=en); countryCode changes the country. Pages in other languages are returned as they are.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep the prefilled Search query or URL (query) apify actors, or type your own question.
  3. Keep Pages to return (maxResults) at the prefilled 3.
  4. Click Start.
  5. Open the Output tab. The Results view shows rank, URL, title, word count and status; the Markdown view shows the page content.
Use cases
TaskInputYou getKey fieldsNext step
Web context for an LLM answerquery = the user's question, maxResults 3–5one row per pageurl, title, markdownpass markdown to the model with url as the source
Topic corpus for a vector databasequery per topic, maxResults 10, outputFormat textone row per pagetext, wordCount, urlchunk text, keep url as metadata
Read one known pagequery = a single https:// URLone rowmarkdown, httpStatus, fetchStatussame as above
Tips for better results
  • Ask for 3 to 5 pages for a quick answer. One run gives up to 10 pages.
  • Check the status of each row. Login, paywall and empty pages are marked and not charged.
  • Start several runs for several queries. One run handles one search.
Limits and good to know
  • 1–10 readable pages per run; Google results from up to 2 result pages are tried
  • One page request waits up to 15 seconds; the whole run follows timeoutSecs (10–120)
  • Page size up to 5 MB; content up to 200,000 characters
  • 256 MB memory is enough; measured runs used under 60 MB

For developers

Sample result

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

one result · JSON
{
  "query": "apify actors",
  "rank": 1,
  "url": "https://apify.com/actors",
  "title": "Automate anything with Apify Actors · Apify",
  "description": "Actors are web data automations that power your AI and operations. Run them in the cloud or locally to scrape websites, process data, or connect APIs, all ...",
  "markdown": "# Automate anything with Apify Actors\n\nActors are web data automations that power your AI and operations. …",
  "wordCount": 427,
  "fetchStatus": "ok",
  "httpStatus": 200,
  "error": null,
  "fetchedAt": "2026-10-15T04:12:15.881Z"
}

Use it from code

Actor ID: cliqtomedia/rag-web-search. 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/rag-web-search").call(run_input={
    "query": "apify actors",
    "maxResults": 3
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~rag-web-search/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "apify actors", "maxResults": 3}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/rag-web-search")
result = tool.invoke({"run_input": {"query": "apify actors", "maxResults": 3}})
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 (13)
FieldTypeMeaning
querystringThe search query (or the URL in URL mode).
rankintegerPosition among Google organic results (1 = top). Ads and Google's own links are skipped.
urlstringReal page URL from Google (no Google redirect wrapper, no tracking parameters).
titlestringPage title, or the Google result title when the page could not be read.
descriptionstringGoogle result snippet.
markdownstringMain content as Markdown when outputFormat is markdown. null on status rows.
textstringMain content as plain text when outputFormat is text. null on status rows.
htmlstringCleaned main-content HTML when outputFormat is html. null on status rows.
wordCountintegerWords in the returned content (0 on status rows).
fetchStatusstringok = content returned and charged. Other values are free status rows: blocked (anti-bot or refused), login_required, paywall, not_html (PDF, file), empty (under 50 words), timeout, error.
httpStatusintegerHTTP status of the page response.
errorstringWhy the page has no content. null for ok rows.
fetchedAtstringWhen the page was read (ISO 8601).
Input settings (5)

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

SettingName in the APITypeExample value
Search query or URL requiredquerystring"apify actors"
Pages to returnmaxResultsinteger3
Content formatoutputFormatstring"markdown"
Google countrycountryCodestring"us"
Time budget (seconds)timeoutSecsinteger40

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