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 or /gemini replies (the answer as Markdown), documents and links (the cited sources) ChatGPT 7, AI Mode 6, Gemini 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" or "gemini"
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.

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.1.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.1.0
File Size Uploaded Provenance Actions
cloro_haystack-0.1.0.tar.gz 13.6 kB With provenance Details for cloro_haystack-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 24.0 kB

Release files / cloro_haystack-0.1.0.tar.gz

Download URL cloro_haystack-0.1.0.tar.gz
Size 13.6 kB
Tags Source
SHA-256 checksum
How to use checksums
38ede1c1b058d2c26f99e9b564d402b38836e1bab52717aec7dc9168abfc7148
BLAKE2b-256 checksum
How to use checksums
69925d65bf049da96835442348e2b406c82f438a8940de0ee872264cedda2636
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 6, 2026.

Transparency log

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

Download URL cloro_haystack-0.1.0-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f2b0f8018d37b765105458f73f1bc8d9ebfd2664b3a62e67223f5c99fe3691c
BLAKE2b-256 checksum
How to use checksums
abeec05d7eb3d64851b7f47fdf012d86735ca0d181bbe429970539e95625031d
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 6, 2026.

Transparency log

Security for cloro-haystack 0.1.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.1.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 6, 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.1.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