AI Web Research Assistant with Citations
Pricing
$50.00 / 1,000 research brief completeds
AI Web Research Assistant with Citations
Ask any research question and get a concise answer synthesised from web sources you supply or it finds, with inline citations and the source records to check them.
Ask any research question and get a concise answer synthesised from web sources you supply or it finds, with inline citations and the source records to check them.
Best for: research brief, cited research, web research.
Input and output: Drop in a research question and get an inspectable cited answer in one run.
What can Research Brief do?
Ask a focused question and add any sources you want to prioritize. The Actor can search for more public pages, fetches the selected sources, and saves a cited brief with a row for each source.
| What you get | Features |
|---|---|
| 📄 A cited Markdown brief | 🌐 Supplied URL fetching and optional web search |
| 🔗 Source rows with fetch status and excerpts | 📏 Quick, standard, and deep source limits |
Who this is for
- Prepare a short evidence brief
- Compare claims across a set of links
- Collect source records for later analysis
What you get back
| Field | Type | What you get | Example |
|---|---|---|---|
id | string | Stable source identifier used in the dataset. | S1 |
title | string | Title reported for the source item. | Hallucination (artificial intelligence) - Wikipedia |
url | string | Link to the source page used in the brief. | https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence) |
status | string | Whether this item completed its requested analysis. | fetched |
published | null | Publication date when the page provides one. | null |
excerpt | string | Short text excerpt collected from the source. | Hallucination (artificial intelligence) 39 languages Afrikaans العربية Asturianu Azərbaycanca Български বাংলা Bosanski Català Čeština Dansk Deutsch Esperanto... |
error | null | Problem details when this item does not complete. | null |
The run also links to its dataset and any files named in the Actor output.
What you need to provide
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
question | string | Yes | The specific question the brief should answer. | What are the main approaches to reducing hallucination in LLM-based agents? |
context | string | No | Optional background, constraints, audience, or decision this research should support. | `` |
depth | string | No | Quick uses up to 3 sources, standard up to 6, and deep up to 10. | quick |
sourceUrls | array | No | Optional URLs to prioritize. The Actor can also discover web sources. The prefilled examples are stable public pages so a first run succeeds even if web search is unavailable. | ["https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)","https://en.wi... |
search | boolean | No | Discover additional public web sources with DuckDuckGo. | true |
llm | object | No | Optional OpenAI-compatible endpoint override: baseUrl, model, apiKey. Leave blank to use the Actor's own default model (no key needed). Without an apiKey, baseUrl/model are ignored. | `` |
Quick start
- Open the Actor in Apify Console.
- Click Try for free or Create a task.
- Replace the sample values with your own input.
- Click Start.
- Open the dataset and the named output files when the run ends.
Pricing
brief-completed: $0.05 per research brief completed.- Example: any brief (quick 3, standard 6, or deep 10 sources) costs $0.05; an evidence-only brief (synthesis failed) is not charged.
- You pay only for successful results. Failed or skipped items are not charged.
- Normal Apify compute and proxy costs may also apply.
Limits and honest notes
- Quick uses up to 3 sources, standard up to 6, and deep up to 10.
- Pages that block access return an error source row.
- If synthesis fails, the Actor saves an evidence only brief and labels the failure.
Code and API
The examples below use the same values as the Apify Console sample.
Input JSON
{"question": "What are the main approaches to reducing hallucination in LLM-based agents?","depth": "quick","sourceUrls": ["https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)","https://en.wikipedia.org/wiki/Retrieval-augmented_generation"],"search": true}
Real output sample
This excerpt comes from the real run named in the current marketplace release report.
{"title": "Hallucination (artificial intelligence) - Wikipedia","url": "https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)","published": null,"excerpt": "Hallucination (artificial intelligence) 39 languages Afrikaans العربية Asturianu Azərbaycanca Български বাংলা Bosansk...","status": "fetched","error": null,"id": "S1"}
curl
curl -X POST "https://api.apify.com/v2/acts/physealabs~research-brief/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d @input.json
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("physealabs/research-brief").call(run_input={'question': 'What are the main approaches to reducing hallucination in LLM-based agents?', 'depth': 'quick', 'sourceUrls': ['https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)', 'https://en.wikipedia.org/wiki/Retrieval-augmented_generation'], 'search': True})items = client.dataset(run["defaultDatasetId"]).list_items().items
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('physealabs/research-brief').call({"question": "What are the main approaches to reducing hallucination in LLM-based agents?", "depth": "quick", "sourceUrls": ["https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)", "https://en.wikipedia.org/wiki/Retrieval-augmented_generation"], "search": true});const { items } = await client.dataset(run.defaultDatasetId).listItems();
You can call this Actor from an agent or LLM tool that can send HTTP requests to the Apify API. Keep the Apify token in a secret store.
FAQ
Do I have to provide source URLs?
No. The Actor can search for public sources when search is true.
What does depth change?
It changes the source cap: 3 for quick, 6 for standard, and 10 for deep.
What happens if a page cannot be read?
The source row is kept with status set to error.


