RAG Web Search: Google Results as Clean Markdown avatar

RAG Web Search: Google Results as Clean Markdown

Pricing

from $1.70 / 1,000 readable pages

Go to Apify Store
RAG Web Search: Google Results as Clean Markdown

RAG Web Search: Google Results as Clean Markdown

Search Google and get the top result pages as clean Markdown, text or HTML for LLMs, RAG and AI agents. No login or API key. Blocked, login and paywall pages are free status rows.

Pricing

from $1.70 / 1,000 readable pages

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

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.

Start with the prefilled query apify actors and 3 pages. Pages that block robots, ask for a login or sit behind a paywall are not bypassed: they come back as free status rows, and the Actor reads the next Google result instead.

RAG Web Search: a Google query in, the main text of the top pages out as Markdown, text or HTML

Table of contents

What it does

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

If you put a URL instead of a query, the Actor skips Google and reads only that page.

Good fit

  • 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 fit / limits

  • 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).

Quick start

  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.

Expected result: 3 rows with fetchStatus: "ok" and Markdown content, usually in under 10 seconds, plus free status rows for any pages that could not be read.

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
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

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectExampleRecommendation
querySearch query or URLstringyesprefill apify actors1–500 characters; Google operators work (site:, quotes, -word); or one http(s) URLwhat Google searches, or the single page to readrag chunking strategieswrite it like a normal Google search
maxResultsPages to returnintegernodefault 3, prefill 31–10how many readable pages you get; status rows do not count53–5 for chat answers, 10 for a corpus
outputFormatContent formatstringnomarkdownmarkdown, text, htmlwhich content field is filledtextMarkdown keeps headings and links; text is smallest
countryCodeGoogle countrystringnoustwo letters (gl), e.g. us, gb, dewhich country's results Google shows; language stays Englishgbuse the country of your users
timeoutSecsTime budget (seconds)integerno4010–120the Actor stops reading pages after this time and returns what it has60raise it if you often get TIME_LIMIT

Interacting settings

WhenInput AInput BEffective behaviorExampleCost/result effect
Some top pages are blockedmaxResults—the Actor reads further Google results (up to 2 result pages) to fill the numbermaxResults: 3, 3 blocked → reads results 4–6status rows are free
Slow sitesmaxResultstimeoutSecswhen time runs out the run ends as partial with the rows it already hasmaxResults: 10, timeoutSecs: 10 → 6 rowsyou pay only for saved rows
query is a URLquerycountryCodeGoogle is not used; countryCode is ignored; maxResults is 1https://apify.com/actorsone search event + one page event

Input examples

Answer a question with web context

{
"query": "rag chunking strategies",
"maxResults": 3,
"outputFormat": "markdown"
}

Expected behavior: one Google search, then the top readable pages. Expected output: 3 rows with rank, url, title, markdown. Limit or cost note: 1 search + 3 page events.

Plain text from the UK results

{
"query": "how to make cold brew",
"maxResults": 5,
"outputFormat": "text",
"countryCode": "gb"
}

Expected behavior: Google UK results; blocked pages are skipped and the next results are read. Expected output: up to 5 ok rows with text, plus free status rows for pages that could not be read.

Read one page

{
"query": "https://apify.com/actors",
"outputFormat": "html"
}

Expected behavior: no Google search; the Actor reads this page only. Expected output: 1 row with cleaned html.

Output

Output fields

FieldMeaningTypeCan be empty?Example / enumSource / notes
queryyour search query (or the URL)stringnoapify actorsinput
rankposition among Google organic results, 1 = topintegerno1Google; ads are not counted
urlreal page addressstringnohttps://apify.com/actorsGoogle redirect and tracking parameters removed
titlepage title, or the Google title if the page was not readstringyesAutomate anything with Apify Actors · Apifypage <title>
descriptionGoogle snippetstringyesActors are web data automations…Google; null in URL mode
markdownmain content as Markdownstringyes# Automate anything…only when outputFormat is markdown; null on status rows
textmain content as plain textstringyesAutomate anything…only when outputFormat is text
htmlcleaned main-content HTMLstringyes<main><h1>…only when outputFormat is html
wordCountwords in the contentintegerno4270 on status rows
fetchStatusresult of reading the pagestringnook, blocked, login_required, paywall, not_html, empty, timeout, erroronly ok rows are charged
httpStatusHTTP status of the pageintegeryes200null when no response
errorwhy there is no contentstringyesHTTP 403null on ok rows
fetchedAtwhen the page was readstring (ISO 8601)no2026-10-15T04:12:15.881Z—

Only one of markdown, text or html is present in a row, the one you chose, so only the matching view (Markdown, Text or HTML) shows content. Content is cut at 200,000 characters.

Output entities and surfaces

SituationDataset/API/KVS/live viewResult shapeUser action
Normal itemDataset, views Results, Markdown, Text, HTMLok rows first, ordered by rankuse the content field
Domain-empty resultDataset empty; RUN_SUMMARY status not_foundno rowschange the query
Partial resultDataset ok rows + status rows; RUN_SUMMARY status partial with partialReason (TIME_LIMIT, CHARGE_LIMIT, NOT_ENOUGH_READABLE_PAGES)fewer ok rows than askedraise timeoutSecs or your spending limit, or rephrase
Technical failurerun FAILED, status message and RUN_SUMMARY status errorno rows, nothing chargedstart the run again later

RUN_SUMMARY in the default key-value store also has requested, returned, serpRoute, statusCounts and chargedEvents.

Output example

From a real run with the prefilled input (content trimmed):

{
"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"
}

A status row has the same fields with no content field, for example "fetchStatus": "blocked", "httpStatus": 403, "wordCount": 0.

Pricing and limits

Pricing unit

The Actor uses pay-per-event pricing. You pay only for these events; platform usage is included.

EventWhen it is chargedFree planBronzeSilverGold+
searchonce per run that gets an answer: one Google search (also when Google has no results) or one URL read$0.003$0.00285$0.0027$0.00255
pageper saved row with fetchStatus: "ok"$0.002$0.0019$0.0018$0.0017

Status rows (blocked, login_required, paywall, not_html, empty, timeout, error) are free. If Google cannot be reached, the run fails and nothing is charged. If your spending limit is lower than the next row, the run stops as partial and keeps only the paid rows.

Cost examples

Free-plan prices:

ScenarioInput scopeExpected eventsBase chargeOptional chargeStop/cap behavior
TypicalmaxResults 31 search + 3 pages$0.009nonestops at 3 ok rows
One pagemaxResults 1, or one URL1 search + 1 page$0.005none—
LargestmaxResults 101 search + 10 pages$0.023nonestops at 10 ok rows
No Google resultsany1 search$0.003nonerun ends not_found
All pages blockedany1 search$0.003nonerun ends partial, status rows only
URL could not be readone URL1 search$0.003nonerun ends partial, one status row

Limits

  • 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.

API, export and integrations

  • API: start the Actor with the Apify API and read the Dataset items; each item is one page.
  • Export: the Dataset downloads as JSON, CSV, Excel or HTML from the Output tab.
  • SDK: call it from the Apify Python or JavaScript client and pass the markdown field to your RAG pipeline (for example LangChain or LlamaIndex loaders).

Use with AI agents (MCP)

  • MCP server URL with only this Actor: https://mcp.apify.com?tools=cliqtomedia/rag-web-search (see Apify MCP server).
  • Smallest useful input:
{ "query": "apify actors", "maxResults": 3 }
  • Key output fields: url (source to cite), title, markdown (page content), fetchStatus (ok = usable), rank.
  • A typical call returns 3 pages in about 1–7 seconds and costs about $0.009 on the Free plan.
  • Limits: 10 pages per call, no JavaScript rendering, logins and paywalls are not opened.

Troubleshooting

Fewer pages than I asked for

Symptom: the run ends as partial with fewer ok rows. Likely reason: many top results blocked the request or needed JavaScript, or the time budget ended. Check: partialReason and statusCounts in RUN_SUMMARY. Action: for TIME_LIMIT raise timeoutSecs; for NOT_ENOUGH_READABLE_PAGES rephrase the query or add -site: for sites that block.

A known site is always blocked

Symptom: the same domain comes back as blocked with HTTP 403. Likely reason: the site refuses automated requests. The Actor does not solve CAPTCHAs or bypass anti-bot checks. Action: use other results, or a source that allows automated access.

The run failed

Symptom: run status FAILED, message about Google. Likely reason: Google did not return a readable results page on any route. Action: start the run again in a few minutes. Nothing was charged.

FAQ

Do I need a Google API key or a login?

No. The Actor reads public Google results and public pages. It does not open pages that need a login.

What happens when Google finds nothing?

The run succeeds with status not_found, no rows, and one search event ($0.003 on the Free plan).

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.

Support

For a bug, question or feature request, open an issue on the Issues tab of this Actor. Include the run ID, your input (without private data) and the RUN_SUMMARY message. Never send API tokens or cookies.