August 13, 2026

# Always-on web monitoring research with Parallel Monitors and Hermes Agent

How to detect the changes that matter with Monitor and chain follow-up Tasks into always-on agentic workflows.

Tags:Developers
Reading time: 7 min
Always-on web monitoring research with Parallel Monitors and Hermes Agent

Monitor[Monitor](https://docs.parallel.ai/monitor-api/monitor-quickstart) is the API we get asked about most. It lets you continuously track events across the web using scheduled, natural-language queries and delivers detected events through a configured webhook or API call.

As a result, several of our most active customers have made Monitor the foundation of their agentic scaffolding. That makes sense when you think about it: almost every economically valuable workflow (whether it’s drug discovery, sales, or investing) requires change detection in a timely fashion. Monitor is what makes this possible at scale.

In this article, we’ll walk you through how to think about Monitor and construct your own always-on agentic workflow (including one use case with Hermes[Hermes](https://hermes-agent.org/), a popular open-source agent framework).

## How Monitor is used today

The use cases cluster around a common pattern: something changes in the world, and the web is the first place to find that the change has happened. Monitor makes it easy for you to detect when this change happens across various domains:

  • - **Sales and GTM:** A target account opening a new office, a competitor announcing a product, a prospect’s funding round hitting the news.
  • - **Life sciences:** Catching clinical trial phase transitions or regulatory filings based on your monitoring schedule.
  • - **Hedge funds:** Surfacing product recalls, executive departures, or adverse regulatory actions early enough to reduce exposure.
  • - **Competitive intelligence:** Watching competitor websites, documentation, and media for newly detected changes.
  • - **Financial crime and compliance teams:** Monitoring existing customers for adverse media or new sanctions and flagging matches before they become liabilities.

## What makes Monitor special

Monitor goes beyond just telling you that something has changed; it lets you get the most relevant information and use it to take action. Let’s take a closer look at this capability:

  • - **Precision surfaces meaningful results.** Change detection has historically had a very poor signal-to-noise ratio, resulting in a flood of irrelevant notifications that obscure meaningful events. Parallel’s Monitor is built to pick up very specific, tightly defined criteria (e.g., “A company in our target-account list announces a Series B or later funding round.”)
  • - **Auditability enables trust.** Every detected event includes a `basis` field containing citations (i.e., cited sources), reasoning, and a calibrated confidence score for the findings. You can also filter these scores programmatically to surface only relevant findings (e.g., only show results with `"confidence": "high"`).
  • - **Gluing agentic tasks to get more done.** You can use Monitor’s findings to trigger follow-up actions, whether it’s monitoring when past work has changed or setting in motion future work. Let’s take a closer look at this benefit next, as it’s one of Monitor’s most powerful features.

## Chaining together agentic workflows

As mentioned earlier, a monitor firing is not the end of a workflow. Instead, you can use data from Monitor to trigger a follow-up action, such as:

  • - Trigger follow-up work via your agentic tool of choice (e.g., Parallel’s Deep Research Task[Deep Research Task](https://docs.parallel.ai/task-api/task-quickstart)).
  • - Updating existing work, such as internal documentation, trackers, or reports, to reflect the latest information.
Illustration demonstrating deep research API concepts, web search capabilities, or AI agent integration features
![](https://cdn.sanity.io/images/5hzduz3y/production/06aab84c54bdd3a5669b70bb5c68a480df36b13e-2000x1500.png)

This allows you to create end-to-end workflows that turn detected changes into action, whether it’s gathering key context for a decision or updating internal systems.

For example, let’s say that Monitor detects that a competitor’s drug has progressed through the next stage of clinical trials. Instead of just alerting stakeholders, you can go one step further by launching an agent that pulls the trial data, measures performance, and surfaces the results to the right team for quick decision-making. The agent could also update your internal clinical trial tracker, ensuring the whole team is working with the latest information.

### Building the agentic chain

Once you have a relevant event, you can use a Parallel Task to trigger follow-up research. Let’s take a closer look at how to do this with the code sample below:

**Note:** For some of these samples, we’ll be using the official Parallel Python library, which you can install from PyPI[PyPI](https://pypi.org/project/parallel-web/).

### Chain a Monitor event into a Deep Research Task
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import os from parallel import Parallel client = Parallel(api_key=os.environ["PARALLEL_API_KEY"]) # Returned by client.monitor.create(...) monitor_id = "YOUR_MONITOR_ID" # Available after the monitor produces an event. Read it from # event.event_group_id in client.monitor.events(monitor_id).events, # or from data["event"]["event_group_id"] in a monitor.event.detected webhook. event_group_id = "YOUR_EVENT_GROUP_ID" # 1. Fetch the event result = client.monitor.events( monitor_id, event_group_id=event_group_id, ) event = result.events[0] output_content = event.output.content event_id = event.event_id # 2. Launch deep research task_run = client.task_run.create( input=f"Research the following event in depth and summarize its strategic implications: {output_content}", processor="ultra", previous_interaction_id=event_id, ) print(f"Run ID: {task_run.run_id}") # Block for the result or use a webhook run_result = client.task_run.result(task_run.run_id, api_timeout=3600) print(run_result.output.content)```
import os
from parallel import Parallel
 
client = Parallel(api_key=os.environ["PARALLEL_API_KEY"])
 
 
# Returned by client.monitor.create(...)
monitor_id = "YOUR_MONITOR_ID"
 
# Available after the monitor produces an event. Read it from
# event.event_group_id in client.monitor.events(monitor_id).events,
# or from data["event"]["event_group_id"] in a monitor.event.detected webhook.
event_group_id = "YOUR_EVENT_GROUP_ID"
 
 
# 1. Fetch the event
result = client.monitor.events(
monitor_id,
event_group_id=event_group_id,
)
event = result.events[0]
output_content = event.output.content
event_id = event.event_id
 
# 2. Launch deep research
task_run = client.task_run.create(
input=f"Research the following event in depth and summarize its strategic implications: {output_content}",
processor="ultra",
previous_interaction_id=event_id,
)
print(f"Run ID: {task_run.run_id}")
# Block for the result or use a webhook
run_result = client.task_run.result(task_run.run_id, api_timeout=3600)
print(run_result.output.content)
```

After you fetch the Monitor event, you can pass all relevant context from Monitor to Task by passing the `event_id` as `previous_interaction_id`. This allows the Task to inherit the Monitor event’s full context and pick up where Monitor left off, without any manual stitching on your part.

To put this into practice, we’re going to share two examples to show you how to build these agentic workflows.

## Example one: Qualifying live sales signals

At Parallel, we use Monitor internally to track new agentic product launches to identify potential prospects. The workflow goes:

  1. Create a Monitor for each target company (e.g., “new agentic product launch by Glean.”)
  2. When Monitor detects a relevant event, it triggers our Deep Research Task API to qualify and score relevance for Parallel. This is a simple score from 1 to 3, where 3 is the most relevant to us, and 1 is the least relevant.

Internally, we run this as a script that alerts a Slack channel, but you could build a dashboard following this flow.

Let’s take a closer look at the code that powers this workflow:

### Qualify and score a detected product launch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import os import re from parallel import Parallel client = Parallel(api_key=os.environ["PARALLEL_API_KEY"]) # 1. Fetch the event # Example- Monitor: "notify me when Glean launches a new agentic product" # Returned by client.monitor.create(...) monitor_id = "YOUR_MONITOR_ID" # Available after the monitor produces an event. Read it from # event.event_group_id in client.monitor.events(monitor_id).events, # or from data["event"]["event_group_id"] in a monitor.event.detected webhook. event_group_id = "YOUR_EVENT_GROUP_ID" result = client.monitor.events( monitor_id, event_group_id=event_group_id, ) event = result.events[0] output_content = event.output.content event_id = event.event_id # 2. Score relevance for Parallel (1–3), chained to the monitor event scoring_prompt = f"""Return a number (3, 2, or 1) based on the following rubric. Respond with only the number. 3 - Strong fit. Award if any of the following are clearly true: - Company the event is about already uses a web search API in production - Core workflow is visibly reliant on open web data (e.g. SEC filing agent, competitor intel tool) - Exploits or would clearly benefit from live web triggers or signals - Performs deep or multi-step research as a primary use case 2 - Uncertain. Award if web search or live data could plausibly improve the product but it isn't obvious from what's known. 1 - Poor fit. Award if the product is clearly self-contained: internal data only, no web dependency. Product: {output_content}""" task_run = client.task_run.create( input=scoring_prompt, processor="base", previous_interaction_id=event_id, task_spec={ "output_schema": "A single integer: 1, 2, or 3", }, ) run_result = client.task_run.result(task_run.run_id, api_timeout=3600) score_text = str(run_result.output.content).strip() match = re.fullmatch(r"[123]", score_text) if match is None: raise ValueError(f"Expected a score of 1, 2, or 3; received: {score_text!r}") score = int(match.group()) labels = {3: "Strong fit", 2: "Uncertain", 1: "Poor fit"} print(f"Score: {score} — {labels[score]}")```
import os
import re
from parallel import Parallel
 
client = Parallel(api_key=os.environ["PARALLEL_API_KEY"])
 
# 1. Fetch the event
# Example- Monitor: "notify me when Glean launches a new agentic product"
# Returned by client.monitor.create(...)
monitor_id = "YOUR_MONITOR_ID"
 
# Available after the monitor produces an event. Read it from
# event.event_group_id in client.monitor.events(monitor_id).events,
# or from data["event"]["event_group_id"] in a monitor.event.detected webhook.
event_group_id = "YOUR_EVENT_GROUP_ID"
 
result = client.monitor.events(
monitor_id,
event_group_id=event_group_id,
)
event = result.events[0]
output_content = event.output.content
event_id = event.event_id
 
# 2. Score relevance for Parallel (1–3), chained to the monitor event
scoring_prompt = f"""Return a number (3, 2, or 1) based on the following rubric. Respond with only the number.
 
3 - Strong fit. Award if any of the following are clearly true:
- Company the event is about already uses a web search API in production
- Core workflow is visibly reliant on open web data (e.g. SEC filing agent, competitor intel tool)
- Exploits or would clearly benefit from live web triggers or signals
- Performs deep or multi-step research as a primary use case
 
2 - Uncertain. Award if web search or live data could plausibly improve the product but it isn't obvious from what's known.
 
1 - Poor fit. Award if the product is clearly self-contained: internal data only, no web dependency.
 
Product: {output_content}"""
 
task_run = client.task_run.create(
input=scoring_prompt,
processor="base",
previous_interaction_id=event_id,
task_spec={
"output_schema": "A single integer: 1, 2, or 3",
},
)
run_result = client.task_run.result(task_run.run_id, api_timeout=3600)
 
score_text = str(run_result.output.content).strip()
match = re.fullmatch(r"[123]", score_text)
 
if match is None:
raise ValueError(f"Expected a score of 1, 2, or 3; received: {score_text!r}")
 
score = int(match.group())
labels = {3: "Strong fit", 2: "Uncertain", 1: "Poor fit"}
print(f"Score: {score} — {labels[score]}")
```

Similar to the previous code sample, we share the relevant context from Monitor to Task by passing the `event_id` as `previous_interaction_id`. Then, we implement a relevance scoring prompt to qualify live sales signals, along with additional code to output the results. You can definitely extend this to feed into your other GTM systems, whether it’s alerting a Slack channel or updating a dashboard via a Webhook.

## Example two: Personal agent with Hermes

Illustration demonstrating deep research API concepts, web search capabilities, or AI agent integration features
![](https://cdn.sanity.io/images/5hzduz3y/production/1c79398845ffa6afd3c6e695e3058cc6d92338d8-763x381.jpg)
Screenshot of the personal agent monitoring concert ticket availability on Telegram.

A personal agent can help you with common tasks, like watching for concert tickets or campsites. Let’s show you how to build this with Hermes (an open-source AI agent from Nous Research) and the Monitor API.

The workflow is simple:

  1. You use a messaging app (we use Telegram here, but you can easily use WhatsApp or SMS) to tell Hermes what to monitor (e.g., “Watch for new tour dates or on-sale announcements for [artist] near [city]”).
  2. Using Monitor, Hermes creates an event-stream monitor with a structured output schema (e.g., artist, venue, on-sale date, presale details, URL), pointed at its own webhook route.
  3. When Hermes is alerted of a relevant event (which we’ve specified as a high-confidence event), it will create a follow-up Task to research whether the event fits your budget and scheduling preferences.
  4. If it meets the criteria, Hermes will send you a message with the link to buy tickets (unfortunately, ticket platforms generally don’t allow fully automated ticket purchases).

Let’s take a closer look at the code. When you send messages to your bot on Telegram, the `listen` function pulls them into our system.

### Listen for Telegram messages
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def listen() -> None: global CHAT_ID offset = None while True: try: updates = requests.get(f"{TELEGRAM}/getUpdates", params={"offset": offset, "timeout": 30}, timeout=60).json() if not updates.get("ok"): # a bad token or a second poller is valid JSON, not an error print("telegram:", updates.get("description")) time.sleep(5) continue for update in updates["result"]: offset = update["update_id"] + 1 message = update.get("message", {}) if "text" in message: CHAT_ID = str(message["chat"]["id"]) handle_chat(message["text"]) except Exception as error: print("telegram:", error) time.sleep(5)```
def listen() -> None:
global CHAT_ID
offset = None
while True:
try:
updates = requests.get(f"{TELEGRAM}/getUpdates",
params={"offset": offset, "timeout": 30}, timeout=60).json()
if not updates.get("ok"): # a bad token or a second poller is valid JSON, not an error
print("telegram:", updates.get("description"))
time.sleep(5)
continue
for update in updates["result"]:
offset = update["update_id"] + 1
message = update.get("message", {})
if "text" in message:
CHAT_ID = str(message["chat"]["id"])
handle_chat(message["text"])
except Exception as error:
print("telegram:", error)
time.sleep(5)
```

The `handle_chat` function then decides if the message is a request to create a Monitor for an artist event. If it is, the agent creates the Monitor with Parallel and confirms back to the user what we’re watching.

### Route chat messages into a watch plan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ROUTE = """Message from me: "{text}" If I'm asking you to keep an eye on something on the web, reply with JSON only: {{"action": "watch", "query": "<intent, not keywords, and no dates>", "frequency": "1h" | "6h" | "1d" | "1w", "fields": {{"<field>": "<what to extract>"}}}} Pick the 4-7 fields I'd want in a notification — for tickets that's the artist, the venue, the date, and the on-sale details. Anything else: just answer me normally. """ LINK = "the direct link to buy, or to the announcement if tickets aren't up yet" def handle_chat(text: str) -> None: reply = ask_hermes(ROUTE.format(text=text), "watchtower-route") try: plan = json.loads(re.search(r"\{.*\}", reply, re.S).group()) except (AttributeError, json.JSONDecodeError): plan = {} if plan.get("action") != "watch": send_telegram(reply) return query, fields = plan.get("query"), plan.get("fields") if not query or not isinstance(fields, dict): # the model dropped a key; say so, don't vanish send_telegram("I couldn't turn that into a watch. Try naming the thing and the place.") return fields.setdefault("url", LINK) # the whole point is to hand you a link frequency = plan.get("frequency", "6h") monitor_id = watch(query, fields, frequency) send_telegram(f"Watching: {query}\nEvery {frequency} · {monitor_id}")```
ROUTE = """Message from me: "{text}"
 
If I'm asking you to keep an eye on something on the web, reply with JSON only:
{{"action": "watch", "query": "<intent, not keywords, and no dates>",
"frequency": "1h" | "6h" | "1d" | "1w", "fields": {{"<field>": "<what to extract>"}}}}
 
Pick the 4-7 fields I'd want in a notification — for tickets that's the artist, the venue, the
date, and the on-sale details. Anything else: just answer me normally.
"""
 
LINK = "the direct link to buy, or to the announcement if tickets aren't up yet"
 
 
def handle_chat(text: str) -> None:
reply = ask_hermes(ROUTE.format(text=text), "watchtower-route")
try:
plan = json.loads(re.search(r"\{.*\}", reply, re.S).group())
except (AttributeError, json.JSONDecodeError):
plan = {}
if plan.get("action") != "watch":
send_telegram(reply)
return
query, fields = plan.get("query"), plan.get("fields")
if not query or not isinstance(fields, dict): # the model dropped a key; say so, don't vanish
send_telegram("I couldn't turn that into a watch. Try naming the thing and the place.")
return
fields.setdefault("url", LINK) # the whole point is to hand you a link
frequency = plan.get("frequency", "6h")
monitor_id = watch(query, fields, frequency)
send_telegram(f"Watching: {query}\nEvery {frequency} · {monitor_id}")
```

The Parallel Monitor itself is an `event_stream` that takes a natural-language query and emits one event for each new material change.

### Create the event-stream monitor
1
2
3
4
5
6
7
8
9
10
11
# frequency is any "<n><h|d|w>" from 1h to 30d. The API has no default; 6h is the notebook's. def watch(query: str, fields: dict[str, str], frequency: str = "6h") -> str: monitor = parallel.monitor.create( type="event_stream", frequency=frequency, processor="base", settings={"query": query, "output_schema": schema(fields)}, webhook={"url": WEBHOOK_URL, "event_types": ["monitor.event.detected"]}, ) WATCHING[monitor.monitor_id] = query return monitor.monitor_id```
# frequency is any "<n><h|d|w>" from 1h to 30d. The API has no default; 6h is the notebook's.
def watch(query: str, fields: dict[str, str], frequency: str = "6h") -> str:
monitor = parallel.monitor.create(
type="event_stream",
frequency=frequency,
processor="base",
settings={"query": query, "output_schema": schema(fields)},
webhook={"url": WEBHOOK_URL, "event_types": ["monitor.event.detected"]},
)
WATCHING[monitor.monitor_id] = query
return monitor.monitor_id
```

When the monitor fires, Parallel sends a POST request to our webhook. These events are then added to a work queue, which processes them one at a time.

### Process webhook events from a queue
1
2
3
4
5
6
7
8
9
10
11
12
def work() -> None: while True: data = inbox.get() try: page = parallel.monitor.events(data["monitor_id"], event_group_id=data["event"]["event_group_id"]) for event in page.events: if event.event_type == "event_stream" and event.event_id not in SEEN: handle_event(data["monitor_id"], event) SEEN.add(event.event_id) # only once it lands, so a retry can still save it except Exception as error: print("event failed:", error)```
def work() -> None:
while True:
data = inbox.get()
try:
page = parallel.monitor.events(data["monitor_id"],
event_group_id=data["event"]["event_group_id"])
for event in page.events:
if event.event_type == "event_stream" and event.event_id not in SEEN:
handle_event(data["monitor_id"], event)
SEEN.add(event.event_id) # only once it lands, so a retry can still save it
except Exception as error:
print("event failed:", error)
```

For each of these events, we need to decide if an event is worth acting upon, which requires additional research. For example, if we’re monitoring for music events, we need to figure out what the tickets cost, presale details, date and time, and the official page to buy from. We can fire off a Task with Parallel that does this research.

### Research whether the event fits your constraints
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
FIT = """Here is what changed: {change} My constraints: {preferences} Research this: what tickets actually cost, presale details, the exact date and time, and the official page to buy from. Then decide whether it fits my constraints. """ VERDICT = { "verdict": "exactly one of: fits, does not fit, unclear", "reason": "one sentence, naming the price or the date that decided it", "price": "what tickets cost, or are expected to cost", "purchase_url": "direct link to the page where I can buy", } def research(event, preferences: str) -> dict: run = parallel.task_run.create( input=FIT.format(change=json.dumps(event.output.content, indent=2), preferences=preferences), processor="core-fast", # same price as core, minutes faster previous_interaction_id=event.event_id, # carries the event's own context forward task_spec={"output_schema": schema(VERDICT)}, ) # api_timeout is how long the server holds the connection open; timeout is ours, and # defaults to 600s — without it the SDK hangs up on research it already paid for. return parallel.task_run.result(run.run_id, api_timeout=1800, timeout=1800).output.content```
FIT = """Here is what changed:
{change}
 
My constraints:
{preferences}
 
Research this: what tickets actually cost, presale details, the exact date and time, and the
official page to buy from. Then decide whether it fits my constraints.
"""
 
VERDICT = {
"verdict": "exactly one of: fits, does not fit, unclear",
"reason": "one sentence, naming the price or the date that decided it",
"price": "what tickets cost, or are expected to cost",
"purchase_url": "direct link to the page where I can buy",
}
 
 
def research(event, preferences: str) -> dict:
run = parallel.task_run.create(
input=FIT.format(change=json.dumps(event.output.content, indent=2),
preferences=preferences),
processor="core-fast", # same price as core, minutes faster
previous_interaction_id=event.event_id, # carries the event's own context forward
task_spec={"output_schema": schema(VERDICT)},
)
# api_timeout is how long the server holds the connection open; timeout is ours, and
# defaults to 600s — without it the SDK hangs up on research it already paid for.
return parallel.task_run.result(run.run_id, api_timeout=1800, timeout=1800).output.content
```

Finally, once all of the research comes back, we can make a final call on whether we’re confident that the event is worth acting on. If it is, we call `send_telegram` to let the user know that we found a match for their initial request, along with the relevant details.

### Send the final brief on Telegram
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
BRIEF = """A monitor I asked you to run just fired, and the follow-up research says it fits. Watching: {watching} What changed: {change} Price: {price} Why it fits: {reason} Buy here: {url} Sources: {sources} Write me a Telegram message about this. Lead with what it is and what it costs, keep it under 6 lines, and end with the link. """ def handle_event(monitor_id: str, event) -> None: level, field = confidence(event) if CONFIDENCE.index(level) < CONFIDENCE.index(MIN_CONFIDENCE): print(f"skipped {event.event_id}: {field} was {level} confidence") return fit = research(event, preferences()) if fit.get("verdict") != "fits": send_telegram(f"Skipping one for you — {fit.get('reason', 'it did not fit')}") return send_telegram(ask_hermes(BRIEF.format( watching=WATCHING.get(monitor_id, "something you asked about"), change=json.dumps(event.output.content, indent=2), price=fit.get("price", "unknown"), reason=fit.get("reason", ""), url=fit.get("purchase_url", ""), sources=", ".join({c.url for b in event.output.basis for c in b.citations or []}), ), "watchtower-brief"))```
BRIEF = """A monitor I asked you to run just fired, and the follow-up research says it fits.
 
Watching: {watching}
 
What changed:
{change}
 
Price: {price}
Why it fits: {reason}
Buy here: {url}
 
Sources: {sources}
 
Write me a Telegram message about this. Lead with what it is and what it costs, keep it under
6 lines, and end with the link.
"""
 
 
def handle_event(monitor_id: str, event) -> None:
level, field = confidence(event)
if CONFIDENCE.index(level) < CONFIDENCE.index(MIN_CONFIDENCE):
print(f"skipped {event.event_id}: {field} was {level} confidence")
return
fit = research(event, preferences())
if fit.get("verdict") != "fits":
send_telegram(f"Skipping one for you — {fit.get('reason', 'it did not fit')}")
return
send_telegram(ask_hermes(BRIEF.format(
watching=WATCHING.get(monitor_id, "something you asked about"),
change=json.dumps(event.output.content, indent=2),
price=fit.get("price", "unknown"),
reason=fit.get("reason", ""),
url=fit.get("purchase_url", ""),
sources=", ".join({c.url for b in event.output.basis for c in b.citations or []}),
), "watchtower-brief"))
```

## Try it yourself

With Monitor, any business can learn about the changes that matter most to them and use that to build agentic workflows that take action and move work forward. If you’re building on Monitor, we’d love to hear what you’re doing. Share what you’ve built by contacting us[contacting us](/contact).

## Ready to get started?

Sign up for free. No credit card required.

Try Parallel[Try Parallel](https://platform.parallel.ai/home)Contact sales[Contact sales](https://contact.parallel.ai/)
Are you an agent? Read this to onboard Parallel[Are you an agent? Read this to onboard Parallel](https://parallel.ai/agents.md)
Charles Martin avatar

By Charles Martin

August 13, 2026

## Related Posts81

Building an always-on background agent to proactively support customers

Jul 30, 2026

- [Building an always-on background agent to proactively support customers](https://parallel.ai/blog/customer-watch-background-agent)

Tags:Developers
Author: By Khushi Shelat
Introducing the Parallel Responses API

Jul 21, 2026

- [Introducing the Parallel Responses API](https://parallel.ai/blog/responses-api)

Tags:Product
Author: By Parallel
Building a vendor intelligence system with Parallel

Jul 20, 2026

- [Building a vendor intelligence system with Parallel](https://parallel.ai/blog/vendor-intelligence-system)

Tags:Developers
Author: By Sahith Jagarlamudi
Parallel and Google Cloud Announce Partnership for Agentic Web Search on Gemini Enterprise Agent Platform

Jul 16, 2026

- [Parallel and Google Cloud Announce Partnership for Agentic Web Search on Gemini Enterprise Agent Platform](https://parallel.ai/blog/google-cloud-partnership)

Tags:Product
Author: By Parallel
$5 in free Parallel credits, every month

Jul 15, 2026

- [$5 in free Parallel credits, every month](https://parallel.ai/blog/free-tier-parallel)

Tags:Product
Author: By Parallel
Introducing Parallel Search Turbo

Jul 13, 2026

- [Introducing Parallel Search Turbo](https://parallel.ai/blog/parallel-search-turbo)

Author: By Parallel
Building a realtime voice agent with GPT-Realtime-2.1 and Parallel Search Turbo

Jul 12, 2026

- [Building a realtime voice agent with GPT-Realtime-2.1 and Parallel Search Turbo](https://parallel.ai/blog/gpt-realtime-parallel-turbo)

Tags:Developers
Author: By George Pickett
How Nooks cut web search costs 70.5% by switching to Parallel

Jul 10, 2026

- [How Nooks cut web search costs 70.5% by switching to Parallel](https://parallel.ai/blog/case-study-nooks)

Tags:Customers
Author: By Parallel
How Build created live geofenced alerts powered by Parallel for institutional real estate

Jul 8, 2026

- [How Build created live geofenced alerts powered by Parallel for institutional real estate](https://parallel.ai/blog/case-study-build)

Tags:Customers
Author: By Parallel
OpenClaw now has free, LLM-optimized web search by default powered by Parallel

Jun 9, 2026

- [OpenClaw now has free, LLM-optimized web search by default powered by Parallel](https://parallel.ai/blog/free-web-search-openclaw)

Tags:Company
Author: By Parallel
Introducing real-time Entity Search

Jun 5, 2026

- [Introducing real-time Entity Search](https://parallel.ai/blog/entity-search-company)

Tags:Product
Author: By Parallel
How we enrich & triage inbound leads using the Parallel Task API

Jun 4, 2026

- [How we enrich & triage inbound leads using the Parallel Task API](https://parallel.ai/blog/enrich-triage-inbound-leads-parallel-task-api)

Tags:Developers
Author: By Khushi Shelat
How AirOps creates citation-worthy content at scale, powered by Parallel

May 20, 2026

- [How AirOps creates citation-worthy content at scale, powered by Parallel](https://parallel.ai/blog/case-study-airops)

Tags:Customers
Author: By Parallel
Introducing Index by Parallel

May 19, 2026

- [Introducing Index by Parallel](https://parallel.ai/blog/introducing-index-by-parallel)

Tags:Product
Author: By Parallel
Parallel Monitor API: New processor tiers, snapshots and event streams, and Basis on every event

May 7, 2026

- [Parallel Monitor API: New processor tiers, snapshots and event streams, and Basis on every event](https://parallel.ai/blog/monitor-api)

Tags:Product
Author: By Parallel
How we built parallelmpp.dev

May 5, 2026

- [How we built parallelmpp.dev](https://parallel.ai/blog/parallel-mpp-dev)

Tags:Developers
Author: By Son Do
Actively + Parallel

Apr 29, 2026

- [How Actively's Per Account Agents use Parallel to turn the entire web into a proactive sales intelligence layer](https://parallel.ai/blog/case-study-actively)

Tags:Customers
Author: By Parallel
Parallel Raises at $2 Billion Valuation to Scale Web Infrastructure for Agents

Apr 29, 2026

- [Parallel Raises at $2 Billion Valuation to Scale Web Infrastructure for Agents](https://parallel.ai/blog/series-b)

Tags:Company
Author: By Parallel
Fully Free CLI with Pi, Ollama, Gemma 4, Parallel

Apr 24, 2026

- [Building a free CLI agent with Pi, Ollama, Gemma 4, and Parallel](https://parallel.ai/blog/free-CLI-agent)

Tags:Developers
Author: By Matt Harris
Parallel Search is now free via MCP

Apr 23, 2026

- [Parallel Search is now free for agents via MCP](https://parallel.ai/blog/free-web-search-mcp)

Tags:Product
Author: By Parallel
Search & Extract Benchmarks

Apr 21, 2026

- [Upgrades to the Parallel Search & Extract APIs](https://parallel.ai/blog/parallel-search-api)

Tags:Benchmarks
Author: By Parallel
How Finch is scaling plaintiff law with AI agents that research like associates

Apr 20, 2026

- [How Finch is scaling plaintiff law with AI agents that research like associates](https://parallel.ai/blog/case-study-finch)

Tags:Customers
Author: By Parallel
Genpact and Parallel Web Systems Partner to Drive Tangible Efficiency from AI Systems

Apr 8, 2026

- [Genpact and Parallel Web Systems Partner to Drive Tangible Efficiency from AI Systems](https://parallel.ai/blog/genpact-parallel-partnership)

Tags:Company
Author: By Parallel
Genpact & Parallel

Apr 8, 2026

- [How Genpact helps top US insurers cut contents claims processing times in half with Parallel ](https://parallel.ai/blog/case-study-genpact)

Tags:Customers
Author: By Parallel
DeepSearchQA: Parallel Task API benchmarks deepresearch

Apr 7, 2026

- [A new deep research frontier on DeepSearchQA with the Task API Harness](https://parallel.ai/blog/deep-research)

Tags:Benchmarks
Author: By Parallel
How Modal saves tens of thousands annually by building in-house GTM pipelines with Parallel

Mar 30, 2026

- [How Modal saves tens of thousands annually by building in-house GTM pipelines with Parallel](https://parallel.ai/blog/case-study-modal)

Tags:Customers
Author: By Parallel
Opendoor and Parallel Case Study

Mar 25, 2026

- [How Opendoor uses Parallel as the enterprise grade web research layer powering its AI-native real estate operations](https://parallel.ai/blog/case-study-opendoor)

Tags:Customers
Author: By Parallel
Introducing stateful web research agents with multi-turn conversations

Mar 19, 2026

- [Introducing stateful web research agents with multi-turn conversations](https://parallel.ai/blog/task-api-interactions)

Tags:Product
Author: By Parallel
Parallel is now live on Tempo via the Machine Payments Protocol (MPP)

Mar 18, 2026

- [Parallel is live on Tempo, now available natively to agents with the Machine Payments Protocol](https://parallel.ai/blog/tempo-stripe-mpp)

Tags:Company
Author: By Parallel
Kepler | Parallel Case Study

Mar 17, 2026

- [How Parallel helped Kepler build AI that finance professionals can actually trust](https://parallel.ai/blog/case-study-kepler)

Tags:Customers
Author: By Parallel
Introducing the Parallel CLI

Mar 10, 2026

- [Introducing the Parallel CLI](https://parallel.ai/blog/parallel-cli)

Tags:Product
Author: By Parallel
Profound + Parallel Web Systems

Mar 4, 2026

- [How Profound helps brands win AI Search with high-quality web research and content creation powered by Parallel](https://parallel.ai/blog/case-study-profound)

Tags:Customers
Author: By Parallel
How Harvey is expanding legal AI internationally with Parallel

Mar 2, 2026

- [How Harvey is expanding legal AI internationally with Parallel](https://parallel.ai/blog/case-study-harvey)

Tags:Customers
Author: By Parallel
Tabstack + Parallel Case Study

Feb 23, 2026

- [How Tabstack by Mozilla enables agents to navigate the web with Parallel’s best-in-class web search](https://parallel.ai/blog/case-study-tabstack)

Tags:Customers
Author: By Parallel
Parallel | Vercel

Feb 4, 2026

- [Parallel Web Tools and Agents now available across Vercel AI Gateway, AI SDK, and Marketplace](https://parallel.ai/blog/vercel)

Tags:Product
Author: By Parallel
Product release: Authenticated page access for the Parallel Task API

Jan 28, 2026

- [Authenticated page access for the Parallel Task API](https://parallel.ai/blog/authenticated-page-access)

Tags:Product
Author: By Parallel
Introducing structured outputs for the Monitor API

Jan 21, 2026

- [Introducing structured outputs for the Monitor API](https://parallel.ai/blog/structured-outputs-monitor)

Tags:Product
Author: By Parallel
Product release: Research Models with Basis for the Parallel Chat API

Jan 15, 2026

- [Introducing research models with Basis for the Parallel Chat API](https://parallel.ai/blog/research-models-chat)

Tags:Product
Author: By Parallel
Parallel + Cerebras

Jan 8, 2026

- [Build a real-time fact checker with Parallel and Cerebras](https://parallel.ai/blog/cerebras-fact-checker)

Tags:Developers
Author: By Parallel
DeepSearch QA: Task API

Dec 17, 2025

- [Parallel Task API achieves state-of-the-art accuracy on DeepSearchQA](https://parallel.ai/blog/deepsearch-qa)

Tags:Benchmarks
Author: By Parallel
Product release: Granular Basis

Dec 16, 2025

- [Introducing Granular Basis for the Task API](https://parallel.ai/blog/granular-basis-task-api)

Tags:Product
Author: By Parallel
How Amp’s coding agents build better software with Parallel Search

Dec 11, 2025

- [How Amp’s coding agents build better software with Parallel Search](https://parallel.ai/blog/case-study-amp)

Tags:Customers
Author: By Parallel
Latency improvements on the Parallel Task API

Dec 10, 2025

- [Latency improvements on the Parallel Task API ](https://parallel.ai/blog/task-api-latency)

Tags:Product
Author: By Parallel
Product release: Extract

Nov 20, 2025

- [Introducing Parallel Extract](https://parallel.ai/blog/introducing-parallel-extract)

Tags:Product
Author: By Parallel
FindAll API - Product Release

Nov 18, 2025

- [Introducing Parallel FindAll](https://parallel.ai/blog/introducing-findall-api)

Tags:Product,Benchmarks
Author: By Parallel
Product release: Monitor API

Nov 13, 2025

- [Introducing Parallel Monitor](https://parallel.ai/blog/monitor-api-beta)

Tags:Product
Author: By Parallel
Parallel raises $100M Series A to build web infrastructure for agents

Nov 12, 2025

- [Parallel raises $100M Series A to build web infrastructure for agents](https://parallel.ai/blog/series-a)

Tags:Company
Author: By Parallel
How Macroscope reduced code review false positives with Parallel

Nov 11, 2025

- [How Macroscope reduced code review false positives with Parallel](https://parallel.ai/blog/case-study-macroscope)

Tags:Customers
Author: By Parallel
Product release - Parallel Search API

Nov 6, 2025

- [Introducing Parallel Search](https://parallel.ai/blog/parallel-search-api-beta)

Tags:Benchmarks
Author: By Parallel
Benchmarks: SealQA: Task API

Nov 3, 2025

- [Parallel processors set new price-performance standard on SealQA benchmark](https://parallel.ai/blog/benchmarks-task-api-sealqa)

Tags:Benchmarks
Author: By Parallel
Introducing LLMTEXT, an open source toolkit for the llms.txt standard

Oct 30, 2025

- [Introducing LLMTEXT, an open source toolkit for the llms.txt standard](https://parallel.ai/blog/LLMTEXT-for-llmstxt)

Tags:Product
Author: By Parallel
Starbridge + Parallel

Oct 23, 2025

- [How Starbridge powers public sector GTM with state-of-the-art web research](https://parallel.ai/blog/case-study-starbridge)

Tags:Customers
Author: By Parallel
Building a market research platform with Parallel Deep Research

Oct 22, 2025

- [Building a market research platform with Parallel Deep Research](https://parallel.ai/blog/cookbook-market-research-platform-with-parallel)

Tags:Developers
Author: By Parallel
How Lindy brings state-of-the-art web research to automation flows

Oct 17, 2025

- [How Lindy brings state-of-the-art web research to automation flows](https://parallel.ai/blog/case-study-lindy)

Tags:Customers
Author: By Parallel
Introducing the Parallel Task MCP Server

Oct 16, 2025

- [Introducing the Parallel Task MCP Server](https://parallel.ai/blog/parallel-task-mcp-server)

Tags:Product
Author: By Parallel
Introducing the Core2x Processor for improved compute control on the Task API

Oct 9, 2025

- [Introducing the Core2x Processor for improved compute control on the Task API](https://parallel.ai/blog/core2x-processor)

Tags:Product
Author: By Parallel
How Day AI merges private and public data for business intelligence

Oct 8, 2025

- [How Day AI merges private and public data for business intelligence](https://parallel.ai/blog/case-study-day-ai)

Tags:Customers
Author: By Parallel
Full Basis framework for all Task API Processors

Oct 7, 2025

- [Full Basis framework for all Task API Processors](https://parallel.ai/blog/full-basis-framework-for-task-api)

Tags:Product
Author: By Parallel
Building a real-time streaming task manager with Parallel

Oct 6, 2025

- [Building a real-time streaming task manager with Parallel](https://parallel.ai/blog/cookbook-sse-task-manager-with-parallel)

Tags:Developers
Author: By Parallel
How Gumloop built a new AI automation framework with web intelligence as a core node

Sep 30, 2025

- [How Gumloop built a new AI automation framework with web intelligence as a core node](https://parallel.ai/blog/case-study-gumloop)

Tags:Customers
Author: By Parallel
Introducing the TypeScript SDK

Sep 16, 2025

- [Introducing the TypeScript SDK](https://parallel.ai/blog/typescript-sdk)

Tags:Product
Author: By Parallel
Building a serverless competitive intelligence platform with MCP + Task API

Sep 12, 2025

- [Building a serverless competitive intelligence platform with MCP + Task API](https://parallel.ai/blog/cookbook-competitor-research-with-reddit-mcp)

Tags:Developers
Author: By Parallel
Introducing Parallel Deep Research reports

Sep 11, 2025

- [Introducing Parallel Deep Research reports](https://parallel.ai/blog/deep-research-reports)

Tags:Product
Author: By Parallel
BrowseComp / DeepResearch: Task API

Sep 9, 2025

- [A new pareto-frontier for Deep Research price-performance](https://parallel.ai/blog/deep-research-benchmarks)

Tags:Benchmarks
Author: By Parallel
Building a Full-Stack Search Agent with Parallel and Cerebras

Sep 5, 2025

- [Building a Full-Stack Search Agent with Parallel and Cerebras](https://parallel.ai/blog/cookbook-search-agent)

Tags:Developers
Author: By Parallel
Webhooks for the Parallel Task API

Aug 21, 2025

- [Webhooks for the Parallel Task API](https://parallel.ai/blog/webhooks)

Tags:Product
Author: By Parallel
Introducing Parallel: Web Search Infrastructure for AIs

Aug 14, 2025

- [Introducing Parallel: Web Search Infrastructure for AIs ](https://parallel.ai/blog/introducing-parallel)

Tags:Benchmarks,Product
Author: By Parallel
Introducing SSE for Task Runs

Aug 7, 2025

- [Introducing SSE for Task Runs](https://parallel.ai/blog/sse-for-tasks)

Tags:Product
Author: By Parallel
A new line of advanced Processors: Ultra2x, Ultra4x, and Ultra8x

Aug 5, 2025

- [A new line of advanced Processors: Ultra2x, Ultra4x, and Ultra8x ](https://parallel.ai/blog/new-advanced-processors)

Tags:Product
Author: By Parallel
Introducing Auto Mode for the Parallel Task API

Aug 4, 2025

- [Introducing Auto Mode for the Parallel Task API](https://parallel.ai/blog/task-api-auto-mode)

Tags:Product
Author: By Parallel
A linear dithering of a search interface for agents

Jul 31, 2025

- [A state-of-the-art search API purpose-built for agents](https://parallel.ai/blog/search-api-benchmark)

Tags:Benchmarks
Author: By Parallel
Parallel Search MCP Server in Devin

Jul 31, 2025

- [Parallel Search MCP Server in Devin](https://parallel.ai/blog/parallel-search-mcp-in-devin)

Tags:Product
Author: By Parallel
Introducing Tool Calling via MCP Servers

Jul 28, 2025

- [Introducing Tool Calling via MCP Servers](https://parallel.ai/blog/mcp-tool-calling)

Tags:Product
Author: By Parallel
Introducing the Parallel Search MCP Server

Jul 14, 2025

- [Introducing the Parallel Search MCP Server ](https://parallel.ai/blog/search-mcp-server)

Tags:Product
Author: By Parallel
Starting today, Source Policy is available for both the Parallel Task API and Search API - giving you granular control over which sources your AI agents access and how results are prioritized.

Jul 8, 2025

- [Introducing Source Policy](https://parallel.ai/blog/source-policy)

Tags:Product
Author: By Parallel
The Parallel Task Group API

Jul 2, 2025

- [The Parallel Task Group API](https://parallel.ai/blog/task-group-api)

Tags:Product
Author: By Parallel
State of the Art Deep Research APIs

Jun 17, 2025

- [State of the Art Deep Research APIs](https://parallel.ai/blog/deep-research-browsecomp)

Tags:Benchmarks
Author: By Parallel
Introducing the Parallel Search API

Jun 10, 2025

- [Parallel Search API is now available in alpha](https://parallel.ai/blog/search-api-alpha)

Tags:Product
Author: By Parallel
Introducing the Parallel Chat API - a low latency web research API for web based LLM completions. The Parallel Chat API returns completions in text and structured JSON format, and is OpenAI Chat Completions compatible.

May 30, 2025

- [Introducing the Parallel Chat API ](https://parallel.ai/blog/chat-api)

Tags:Product
Author: By Parallel
Parallel Web Systems introduces Basis with calibrated confidences - a new verification framework for AI web research and search API outputs that sets a new industry standard for transparent and reliable deep research.

May 16, 2025

- [Introducing Basis with Calibrated Confidences ](https://parallel.ai/blog/introducing-basis-with-calibrated-confidences)

Tags:Product
Author: By Parallel
The Parallel Task API is a state-of-the-art system for automated web research that delivers the highest accuracy at every price point.

Apr 24, 2025

- [Introducing the Parallel Task API](https://parallel.ai/blog/parallel-task-api)

Tags:Product,Benchmarks
Author: By Parallel
![Company Logo](https://parallel.ai/parallel-logo-540.png)

Contact

  • hello@parallel.ai[hello@parallel.ai](mailto:hello@parallel.ai)

For Content Owners

  • index.parallel.ai[index.parallel.ai](https://index.parallel.ai)

Products

  • Task API[Task API](https://parallel.ai/products/task)
  • Responses API[Responses API](https://parallel.ai/products/responses)
  • Monitor API[Monitor API](https://parallel.ai/products/monitor)
  • FindAll API[FindAll API](https://parallel.ai/products/findall)
  • Search API[Search API](https://parallel.ai/products/search)
  • Extract API[Extract API](https://parallel.ai/products/extract)
  • Index by Parallel[Index by Parallel](https://index.parallel.ai)

Solutions

  • Sales[Sales](https://parallel.ai/solutions/sales)
  • Finance[Finance](https://parallel.ai/solutions/finance)
  • Legal[Legal](https://parallel.ai/solutions/legal)
  • Coding & Building[Coding & Building](https://parallel.ai/solutions/code)
  • Life Sciences[Life Sciences](https://parallel.ai/solutions/life-sciences)
  • Insurance[Insurance](https://parallel.ai/solutions/insurance)
  • Productivity[Productivity](https://parallel.ai/solutions/productivity)

Developers

  • Docs[Docs](https://docs.parallel.ai/getting-started/overview)
  • Onboard your Agent[Onboard your Agent](https://docs.parallel.ai/getting-started/overview#onboard-your-agent)
  • Parallel MCP[Parallel MCP](https://docs.parallel.ai/integrations/mcp/quickstart)
  • Parallel CLI[Parallel CLI](https://docs.parallel.ai/integrations/cli)
  • API Reference[API Reference](https://docs.parallel.ai/api-reference)
  • Python SDK[Python SDK](https://pypi.org/project/parallel-web/)
  • Typescript SDK[Typescript SDK](https://www.npmjs.com/package/parallel-web)
  • Integrations[Integrations](https://docs.parallel.ai/integrations/agentic-payments)
  • Changelog[Changelog](https://docs.parallel.ai/resources/changelog)
  • Status[Status](https://status.parallel.ai/)
  • Support[Support](mailto:support@parallel.ai)

Company

  • About[About](https://parallel.ai/about)
  • Press[Press](https://parallel.ai/press)
  • Careers[Careers](https://parallel.ai/careers)
  • Pioneers[Pioneers](https://pioneers.parallel.ai/)
  • Museum of the Human Web[Museum of the Human Web](https://museum.parallel.ai/)

Resources

  • Blog[Blog](https://parallel.ai/blog)
  • Benchmarks[Benchmarks](https://parallel.ai/benchmarks)
  • Become a Content Partner[Become a Content Partner](https://index.parallel.ai/join)
  • Pricing[Pricing](https://parallel.ai/pricing)

Legal

  • Terms of Service[Terms of Service](https://parallel.ai/terms-of-service)
  • Customer Terms[Customer Terms](https://parallel.ai/customer-terms)
  • Privacy[Privacy](https://parallel.ai/privacy-policy)
  • Acceptable Use[Acceptable Use](https://parallel.ai/acceptable-use-policy)
  • Bots[Bots](https://parallel.ai/parallel-web-systems-bots)
  • Trust Center[Trust Center](https://trust.parallel.ai/)
  • Report Security Issue[Report Security Issue](mailto:security@parallel.ai)
LinkedIn[LinkedIn](https://www.linkedin.com/company/parallel-web/about/)Twitter[Twitter](https://x.com/p0)GitHub[GitHub](https://github.com/parallel-web)YouTube[YouTube](https://www.youtube.com/@parallelwebsystems)Events[Events](https://luma.com/parallelwebsystems)
All Systems Operational
![SOC 2 Compliant](https://parallel.ai/soc2.svg)

Parallel Web Systems Inc. 2026