Research Agent – Evidence-Graded Web Search for RAG avatar

Research Agent – Evidence-Graded Web Search for RAG

Pricing

from $15.00 / 1,000 answered questions

Go to Apify Store
Research Agent – Evidence-Graded Web Search for RAG

Research Agent – Evidence-Graded Web Search for RAG

Ask a question, get a cited, evidence-graded context for your LLM: Google web and news, official EU and German law, Wikipedia, open-access science, Hacker News, Stack Overflow and GitHub. Every source rated by evidence level, facts cross-checked across sites, outdated information flagged.

Pricing

from $15.00 / 1,000 answered questions

Rating

0.0

(0)

Developer

Perceptron Data

Perceptron Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Ask a question, get a cited context for your LLM – and an evidence check that says how far to trust it.

Limits: the checks are signals, not verdicts. No browser – pages that need JavaScript are skipped and listed with the reason; pages that refuse automated requests are read through Apify's Web Fetch (billed by Apify on your account, at most 2 per question) or else skipped with the reason. Google returns at most 10 results per search; when Google does not answer (about one question in eight in our tests), the question is answered from the other sources, marked partial and not charged.

QuestionStatusStrongest evidenceSource [1]TimeCharged
What does Article 17 GDPR (right to erasure) require?foundofficial (2 official, 1 community, 2 commercial sources)eur-lex.europa.eu – Regulation (EU) 2016/679 (GDPR)25.3 s$0.02 (question + 1 extra search)
What obligations do providers of high-risk AI systems have under the EU AI Act?foundofficial (2 official, 3 commercial)eur-lex.europa.eu – AI Act, consolidated version of 27 July 202652.6 s$0.02 (question + 1 extra search)
Wann verjähren Mängelansprüche nach § 438 BGB?foundofficial (3 official, 1 institution, 3 commercial)gesetze-im-internet.de – § 438 BGB27.9 s$0.02 (question + 1 extra search)

Apify platform runs of 12 October 2026 (the published example tasks). In the same check, "What is the German minimum wage per hour in 2026?" found no sources because Google did not answer – status no_sources, not charged.

What you are not charged for: questions without relevant results, partial answers (Google did not respond), skipped and error rows, and the example question prefilled in the form. A run never charges more than the maximum cost you set; questions beyond it are listed as skipped. Every run has a start fee of $0.00005 at the default 1 GB.

How to use – step by step

  1. Click Try for free on this page (a free Apify account is enough) – the form opens with an example question, which is always free.
  2. Type your question into Question – or many questions, one per line, into Questions (batch). Name the law and the provision ("Art. 17 GDPR", "§ 438 BGB") to get that provision first.
  3. Pick Sources (web and Wikipedia by default; add news, law, science, discussions, code) and, for legal or regulatory questions, Evidence preference: official first.
  4. Click Start. A question usually takes 10–40 seconds, with news, law and the second search round 45–80 seconds.
  5. Open the Output tab: Overview (question, status, context), Evidence check, Sources and Passages. Put context into your prompt, or read the rows through the API (examples below).

Research Agent output: five questions with status, strongest evidence level, cited sources by level, first source, freshness and seconds – Apify platform runs of 12 October 2026

What one call does

One call searches Google (web and news), official legal texts, Wikipedia, open-access science, Hacker News, Stack Overflow and GitHub, reads pages and PDFs in full and keeps only the passages that answer the question. Every answer comes with an evidence check:

  • Evidence level for every source — official (laws, authorities, courts, EU, standards bodies), academic (peer-reviewed), preprint, institution (chambers, associations, consumer organisations), reference, news, documentation, community or commercial. Option Official first ranks primary sources clearly ahead of blogs and vendor pages.
  • Facts cross-checked across sites — amounts, percentages, energy and power figures, dates: which values are consistent across independent sites and which come from a single source. Amounts that contradict each other are flagged — only when they refer to the same thing, the same unit (per hour vs per month) and the same year — with the sentences side by side.
  • Freshness warnings — age of the cited sources, a note when nothing is from the year you asked about, and wording that signals a change: amended by, repealed, replaced by, postponed, geändert durch, aufgehoben …
  • Official legal texts, hard to get elsewhere — EU law straight from the EU Publications Office in its current consolidated version (all 24 EU languages, articles and annexes with their numbers, the amending acts listed), even though EUR-Lex blocks automated access; German federal law from gesetze-im-internet.de. Name the law and the provision — "Art. 17 GDPR", "Article 5 AI Act", "Annex III AI Act", "Recital 26 GDPR", "§ 438 BGB", "Art. 1 GG" — and that provision is loaded and ranked first, even without a search. Recognised by name: GDPR, AI Act, DSA, DMA, Data Act, Data Governance Act, NIS2, DORA, Cyber Resilience Act, Machinery Regulation, MDR, IVDR, eIDAS, Product Liability Directive, Accessibility Act, CSRD, CSDDD, EUDR, Batteries Regulation, GPSR, EMFA, and 38 German federal laws (BGB, HGB, GG, EEG, UWG, BDSG …). Short forms that also mean other things (DSA, DMA, DORA, CRA, MDR) count only next to legal wording, so "DORA metrics" stays a DevOps question. EUR-Lex pages found by the web search are read the same way, from the EU Publications Office.
  • Open-access papers read in full — not just abstracts (OpenAlex, 330 M+ works).
  • Optional second search round — learns the specialist terms the first results use (a regulation number, the official name of a programme) and searches again.

No language model is involved: ranking and checks are rule-based, reproducible, and nothing is sent to a third-party AI.

Example of the evidence check

Question: "Was kostet ein Balkonkraftwerk 2026?" (real run, 8 October 2026):

"agreement": {
"summary": "3 fact(s) consistent across 2+ independent sites, 0 conflict(s), 6 single-source fact(s)",
"facts": [
{ "topic": "kostet Balkonkraftwerk", "kind": "money:EUR",
"values": ["200 und 1.200 €", "250 und 500 Euro", "350 Euro", "500 Euro"],
"citations": [1, 3, 5, 6], "sites": 4, "status": "consistent" }
]
},
"freshness": { "status": "current", "newestSource": "2026-08-21", "medianAgeDays": 149, "notes": [] }

The context field ends with these findings as Evidence notes, so the LLM sees them too.

What you get per question

FieldWhat it is
contextReady-to-paste block: numbered sources [1], [2] … with URL, date and evidence level, their top-ranked passages, then the evidence notes.
passagesSelected passages with stable id (for vector-database upserts), citation, URL, title, site, publishedAt, updatedAt, evidenceLevel, score, tokens.
evidenceEvidence levels of the cited sources and the strongest one.
agreementFacts compared across independent sites: consistent, single source, conflicts.
freshnesscurrent / aging / stale, newest source, median age, notes, change signals.
sourcesEvery source considered — also those that could not be read, with the reason. EU acts carry CELEX number, consolidated version and amending acts.
coveragePer source: results and failures; Google searches used; the second-round query.
statusfound, partial (Google did not answer), no_relevant_text, no_sources, not_readable, skipped (time or cost limit) or error — never an empty row without a reason.

Limits first

  • Checks are signals, not verdicts. Consistency means the values of several sites overlap; a "conflict" may still describe different variants of a product — the example sentences are included so your LLM can judge. Dates are listed and compared, but never reported as conflicts (a law has several deadlines).
  • No browser. Pages that need JavaScript are skipped and listed with the reason. A page that refuses automated requests (HTTP 401/403/429 or a bot check) is read through Apify's own Web Fetch instead – at most 2 such pages per question, billed by Apify on your account (see Pricing); if Web Fetch does not get it either, the page is listed with both reasons. YouTube, Reddit, X, Facebook, Instagram, TikTok and LinkedIn posts are skipped up front.
  • Speed: with the default sources typically 10–40 seconds per question; with news, law and the second round 45–80 seconds. A slow Google answer is retried automatically; Google News is dropped after 25 seconds rather than delaying the answer. If Google does not answer at all (in our tests about one question in eight), the question is answered from the other sources, marked partial and not charged.
  • Science: full text only for open-access papers (top 3 per question); otherwise the abstract.
  • German federal law pages are read through one Apify Proxy address per run; the site refuses direct connections from data centres.
  • GitHub without a token allows about 10 searches per minute. OpenAlex and Stack Exchange limit anonymous use per day; when a limit is reached, the source is reported as failed in coverage — never silently as "no results".
  • Google returns at most 10 results per search, so maxResults is capped at 10.
  • Wikipedia, GitHub and Stack Overflow show their last edit as updatedAt; it is not used as a publication date for the freshness check.

How it works

  1. Search the selected sources in parallel.
  2. Read every page once: main text as Markdown (tables kept), PDFs page by page, EU acts as articles and annexes with their numbers (recitals from the act as adopted when the question names one — consolidated versions leave them out); title, site and date from the page.
  3. Split into passages along headings and paragraphs; photo credits, app banners and affiliate notes are removed.
  4. Score each passage (BM25 with stemming for 15 languages, question terms in heading and title, exact phrases, search position, year in the question, evidence level); drop off-topic passages, near-duplicates, link lists and boilerplate.
  5. Select the top-ranked passages within the token budget (at most 3 per source by default); sources are numbered in the order of their top-ranked passage, so [1] is the strongest match.
  6. Check facts and freshness across the selected passages.

Input

OptionDefaultNotes
query / queries–One question, or many (one per line). The example question (prefilled in the form) is always free.
sourcesweb, wikipediaAdd news, law, science, discussions, code.
preferEvidencebalancedofficial_first ranks primary sources first.
deepResearchoffSecond search round with the learned terms.
scienceFullTextonRead open-access papers in full.
tokenBudget3,000300–30,000 tokens of passages per question; context adds source headers and notes (5–15 %).
maxResults8Google results read per question (1–10).
languageautoDetects en, de, fr, es, it, nl, pl, sv; or set a code (EU law in all 24 languages). Very short keyword queries may need it set.
freshnessanyPast day, week, month or year.
urls–Your own pages or PDFs (up to 50), read once per run and ranked together with the results for every question.
outputModeone row per questionOr one row per passage, for vector databases.

Integrations

API — one call, answer in the response. A question usually takes 10–80 seconds, well within the synchronous endpoint:

curl -X POST "https://api.apify.com/v2/acts/perceptr0n~research-agent/run-sync-get-dataset-items?fields=query,status,context" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"query": "Art. 17 GDPR: when must personal data be erased?", "sources": ["web", "law"]}'

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("perceptr0n/research-agent").call(run_input={
"query": "What does Article 17 GDPR (right to erasure) require?",
"sources": ["law", "web"],
})
# apify-client 3.x; with versions 1–2 use run["defaultDatasetId"]
for row in client.dataset(run.default_dataset_id).iterate_items():
print(row["status"], row["evidence"]["strongest"], row["context"][:300])

JavaScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('perceptr0n/research-agent').call({
query: 'What does Article 17 GDPR (right to erasure) require?',
sources: ['law', 'web'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].status, items[0].evidence.strongest, items[0].context.slice(0, 300));

MCP (Claude, Cursor, VS Code and other agents). Add the Apify MCP server with this Actor as a tool: https://mcp.apify.com?tools=perceptr0n/research-agent – the client signs in to Apify on first connection, or you set the header Authorization: Bearer <APIFY_TOKEN>. The agent sends query, puts context into its prompt, cites with passages[].url and can read agreement.conflicts and freshness.notes before it answers. Price per call (live on 12 October 2026): $0.015 per answered question with one Google search, $0.005 per additional search, plus $0.00005 per run start; unanswered and partial questions are free.

LangChain:

from langchain_apify import ApifyActorsTool
research = ApifyActorsTool("perceptr0n/research-agent")
research.invoke({"run_input": {"query": "What does Article 5 of the AI Act prohibit?", "sources": ["law"]}})

Vector databases. Set outputMode to one row per passage: each row is a ready chunk with text, citation metadata and a stable id (same URL and text → same id), so repeated runs update instead of duplicating. Works with Apify's vector-database integrations (Pinecone, Qdrant and others) or your own loader.

No-code: the Apify modules in n8n, Make and Zapier run the Actor and return the same rows.

AI agents without an Apify account: the Actor is enabled for Apify's agentic payments (x402, Skyfire), so an agent can run it and pay per call.

Examples, tested every week

The Examples tab has ten ready-made questions: EU AI Act obligations, GDPR articles, German law (§ BGB), fact-checking figures, open-access science, developer questions, this week's news, RAG chunks for vector databases, a plain web-search call for agents and two-round deep research. Every example is re-run on the live Actor each week and checked automatically — for legal questions, for instance, that the named provision is cited from the official text first.

Pricing

$0.015 per answered question (one Google search included) and $0.005 per additional Google search – news, legal texts or the second round – plus a start fee of $0.00005 per run at the default 1 GB (live since 8 October 2026). Questions without results, partial answers (Google did not respond), skipped and error rows and the example question are not charged. A run never charges more than the maximum cost you set (at least $0.05); questions beyond it are listed as skipped.

Web Fetch is billed by Apify, not by this actor. A page that refuses automated requests is read through Apify's own Web Fetch actor – at most 2 pages per question (per search round with deepResearch). It runs on your Apify account and Apify bills it there: $0.0015 per delivered page on the free plan plus $0.00005 per call start (Apify Store, 13 October 2026), so at most about $0.003 per question. Such sources say readVia: "Apify Web Fetch"; webFetch: false switches it off.

Changelog

  • 13 October 2026 – Pages that refuse automated requests (HTTP 401/403/429, bot check) are read through Apify's Web Fetch, at most 2 per question, billed by Apify on your account ($0.0015 per delivered page); input webFetch, on by default. Sources read this way say readVia: "Apify Web Fetch".
  • 12 October 2026 – A page now gets only a date it states for itself – in its address, its metadata or next to a label such as "Last updated" – instead of a year from the page code or the date of a post linked on it; an undated page says so in sources[].dateNote and as "undated" in context. Code in passages from Stack Overflow, GitHub and other pages keeps its indentation across blank lines. More newspapers, public broadcasters and news agencies are graded news (for example Taipei Times and RNZ); unknown sites are not guessed to be news, and the Irish Data Protection Commission counts as official. OpenAlex: when the open-access PDF belongs to a different work than the record, it is not used and the work's DOI is cited (meta.pdfNotUsed).
  • 8 October 2026 (1.0) – First public release: evidence level for every source, facts cross-checked across sites, freshness warnings, official EU and German legal texts, open-access full texts, optional second search round. Questions Google did not answer are marked partial and not charged; the example question is free. Ten example tasks published and re-run every week.

Auf Deutsch

Frage rein, zitierter Kontext mit Vertrauens-Check raus: Jede Quelle bekommt eine Evidenzstufe (amtlich, wissenschaftlich, Preprint, Institution wie IHK oder Verbraucherzentrale, Nachschlagewerk, Nachrichten, Dokumentation, Community, kommerziell), Zahlen werden über unabhängige Seiten abgeglichen, veraltete oder geänderte Informationen werden markiert. Dazu amtliche Rechtstexte: EU-Recht in der aktuellen konsolidierten Fassung (alle 24 Amtssprachen) und Bundesrecht — wer die Vorschrift nennt („§ 438 BGB“, „Art. 17 DSGVO“), bekommt genau diese Vorschrift. Deutsche Fragen werden automatisch erkannt. Nicht beantwortete Fragen kosten nichts. Seiten, die automatische Abrufe abweisen, liest der Agent über Apifys eigenen Web Fetch (höchstens 2 je Frage; Apify rechnet das über das eigene Apify-Konto ab, 0,0015 $ je gelieferter Seite; webFetch: false schaltet es ab).

More from Perceptron Data

ActorWhat it does
PDF to MarkdownPDF, Word, Excel and PowerPoint to Markdown for AI – tables as JSON, OCR for scans
Advertiser Check (Google & Bing)Company list in, one row per company out: Google ads, Bing ads, ad counts, accounts
Imprint & VAT CheckDomains in, company rows out: legal name, address, register number and EU VAT ID checked against VIES (Swiss UIDs excluded)
TED TendersEU public tenders and contract awards from TED
Data Source FinderFree: tells you which ready-made scraper covers your data source

Support

Bug reports are welcome in the Issues tab.