Skip to main content

cloro-haystack

Haystack components for cloro.

Component cloro endpoint Output Credits per run
CloroWebSearch POST /v1/monitor/google documents and links from Google organic results. With include_ai_overview=True, the Google AI Overview is the first Document. 5, or 7 with the AI Overview
CloroAIAnswer POST /v1/monitor/chatgpt, /aimode, /gemini or /bing/aimode replies (the answer as Markdown), documents and links (the cited sources) ChatGPT 7, Google AI Mode 6, Gemini 6, Bing AI Mode 6

Installation

pip install cloro-haystack

Get an API key at dashboard.cloro.dev. The free plan includes 500 credits each month. Set the key as CLORO_API_KEY, or pass api_key=Secret.from_token(...).

Usage

CloroWebSearch

from haystack_integrations.components.websearch.cloro import CloroWebSearch

websearch = CloroWebSearch(top_k=5, country="US", include_ai_overview=True)
result = websearch.run(query="What is retrieval-augmented generation?")

for doc in result["documents"]:
    print(doc.meta.get("title"), doc.meta.get("link"))

Each organic result is a Document. Its content is the Google snippet and its meta has title, link and position. The AI Overview Document has meta["source"] == "google_ai_overview" and the URLs it cites in meta["links"]. Results with an empty link or a Google redirect link are skipped.

Parameters:

  • api_key: defaults to the CLORO_API_KEY environment variable.
  • top_k: maximum number of organic results. Defaults to 10. One request returns one page of Google results (about 10). Set search_params={"pages": 2} for more (2 credits for each extra page).
  • country: ISO 3166-1 alpha-2 country code. Defaults to "US".
  • allowed_domains: domains to limit the search to, sent as site: filters.
  • include_ai_overview: request the Google AI Overview. Defaults to False.
  • search_params: other request fields, for example device, location, hl or pages.
  • timeout: request timeout in seconds. Defaults to 60.

CloroAIAnswer

from haystack_integrations.components.websearch.cloro import CloroAIAnswer

ai_answer = CloroAIAnswer(engine="aimode")  # "chatgpt", "aimode", "gemini" or "bing_aimode"
result = ai_answer.run(query="What is retrieval-augmented generation?")

print(result["replies"][0])
print(result["links"])

replies has one string: the answer as Markdown. documents has one Document for each source that the answer cites, with title, link and position in meta. An answer can take 15 to 60 seconds, so the default timeout is 180 seconds.

With engine="bing_aimode", the query can have a maximum of 3,500 characters after URL encoding, and fewer for non-Latin scripts. To send the query from a US state, set search_params={"state": "CA"} with country="US" (2 more credits).

In a pipeline

The output names of CloroAIAnswer match AnswerBuilder:

from haystack import Pipeline
from haystack.components.builders import AnswerBuilder
from haystack_integrations.components.websearch.cloro import CloroAIAnswer

pipe = Pipeline()
pipe.add_component("ai", CloroAIAnswer(engine="chatgpt"))
pipe.add_component("answer", AnswerBuilder())
pipe.connect("ai.replies", "answer.replies")
pipe.connect("ai.documents", "answer.documents")

query = "Which vector databases support hybrid search?"
result = pipe.run({"ai": {"query": query}, "answer": {"query": query}})
print(result["answer"]["answers"][0].data)

CloroWebSearch connects like the other Haystack web search components, for example to a ChatPromptBuilder through documents, or to a fetcher through links.

Both components have run_async for AsyncPipeline.

Errors

A cloro error response raises CloroError with the cloro error code, for example INVALID_API_KEY_FORMAT (401), INSUFFICIENT_CREDITS (403) or CONCURRENCY_LIMIT_EXCEEDED (429). A timeout raises TimeoutError.

Development

uv sync
uv run pytest
uv run ruff check . && uv run ruff format --check .
uv run mypy src
uv build

The tests use httpx.MockTransport and do not call the cloro API.

License

MIT

Metadata

Release files for cloro-haystack 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cloro-haystack 0.2.0
File Size Uploaded Provenance Actions
cloro_haystack-0.2.0.tar.gz 14.3 kB With provenance Details for cloro_haystack-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cloro-haystack 0.2.0
File Interpreter ABI Platform Actions
cloro_haystack-0.2.0-py3-none-any.whl Python 3 none any Details for cloro_haystack-0.2.0-py3-none-any.whl

Total release size: 24.9 kB

Release files / cloro_haystack-0.2.0.tar.gz

Download URL cloro_haystack-0.2.0.tar.gz
Size 14.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c2da8825f711eed83e943a3a81dc7d073bfa97218e6d1a2f3716253c106d3c96
BLAKE2b-256 checksum
How to use checksums
403790590d36c9dfe6325841298e7b1ffa1d40ee59388522f43fc06773aa0226
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 7, 2026.

Transparency log

Release files / cloro_haystack-0.2.0-py3-none-any.whl

Download URL cloro_haystack-0.2.0-py3-none-any.whl
Size 10.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5da724deefdc54403a26c1cbaa81d3df9611aada3f6a01344fd4cd01ac390796
BLAKE2b-256 checksum
How to use checksums
57bdee6b740fee1eb9082dd3ad61d4da090680db7bd0030e27e58bb8acba3040
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 7, 2026.

Transparency log

Security for cloro-haystack 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for cloro_haystack-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 7, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page