Parallel
Give agents Parallel's Search, Task (deep research), and Monitor APIs for grounded web lookups, cited research, and scheduled web tracking.
Enable Agno agents with web search and extraction infrastructure from Parallel that prioritizes token efficiency and multi-hop reasoning.
Search
Natural-language web search that returns LLM-optimized excerpts. Use when the model needs current facts, specific entities, or web data to ground a response.
from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.tools.parallel import ParallelTools
agent = Agent(
model=OpenAIResponses(id="gpt-5.4"),
tools=[ParallelTools(
max_results=10,
include_domains=["techcrunch.com", "wired.com"],
)],
markdown=True,
)
agent.print_response("What are the latest developments in AI agents?", stream=True)Task
Research takes a plain-language input and returns content with a citation basis. create_task returns a provider run_id, not the finished report. Call get_task_result(run_id) to retrieve content and its citation basis; this can block for up to default_timeout (1,800 seconds by default). Agno’s stream=True does not make that tool call stream report tokens. A timeout does not cancel the provider task; retain the ID to check status or retry retrieval.
from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.tools.parallel import ParallelTools
enrichment_tools = ParallelTools(
enable_search=False,
enable_extract=False,
enable_task=True,
default_processor="base",
default_output_schema={
"type": "json",
"json_schema": {
"type": "object",
"properties": {
"company_name": {"type": "string"},
"headquarters": {"type": "string"},
"total_funding": {"type": "string"},
"key_investors": {"type": "array", "items": {"type": "string"}},
},
"required": ["company_name"],
},
},
)
agent = Agent(
model=OpenAIResponses(id="gpt-5.4"),
tools=[enrichment_tools],
markdown=True,
instructions="Use create_task() to research, then get_task_result() to retrieve.",
)
agent.print_response("Research Anthropic and return structured company data", stream=True)Monitor
Continuously track the web for changes relevant to a natural-language query, on a schedule you control. Use for news tracking, regulatory watchlists, or competitor monitoring.
from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.tools.parallel import ParallelTools
monitor_tools = ParallelTools(
enable_search=False,
enable_extract=False,
enable_monitor=True,
default_monitor_frequency="1d",
)
agent = Agent(
model=OpenAIResponses(id="gpt-5.4"),
tools=[monitor_tools],
markdown=True,
)
# Create monitors
agent.print_response("Create a monitor to track OpenAI product launches", stream=True)
# Later: check for events
agent.print_response("List my monitors and fetch recent events", stream=True)Monitors run on Parallel after the script exits. Keep the returned monitor_id, wait for its configured cycle, then call get_monitor_events(monitor_id) to read changes. Rerunning the creation prompt can create another monitor. When finished, call cancel_monitor only for IDs created by this example; cancellation is permanent.
The two monitor calls above run consecutively. For useful events, split them across runs and wait for at least one configured cycle. This example pulls changes; it does not install an alert delivery handler.
Run the Examples
Clone and set up
git clone https://github.com/agno-agi/agno.git
cd agno
git checkout d703c34f3abf3c41275d3fb2da6e0518a8881f24Create virtual environment
./scripts/demo_setup.sh
source .venvs/demo/bin/activate
uv pip install -U agno openai parallel-webExport the required API keys
export PARALLEL_API_KEY="your_parallel_api_key_here"
export OPENAI_API_KEY="your_openai_api_key_here"Run an example
# Search
python cookbook/91_tools/parallel/news_search.py
# Task (deep research)
python cookbook/91_tools/parallel/company_enrichment.py
# Monitor (continuous tracking)
python cookbook/91_tools/parallel/competitor_tracker.pyFor more examples, see the Parallel cookbook.