Skip to main content

keenable-haystack

Keenable web search + page fetch for Haystack 2.x, as two components:

  • KeenableWebSearch — searches the web and returns documents + links, the same output shape as Haystack's built-in SerperDevWebSearch / SearchApiWebSearch, so it is drop-in for pipelines wired to those.
  • KeenableFetcher — fetches a list of URLs and returns documents whose content is the page's main text as markdown (Keenable extracts it server-side, so you don't need a separate LinkContentFetcher + HTMLToDocument step).

Keyless by default: with no API key the keyless public endpoints are used. Provide a key to use the authenticated endpoints (for higher rate limits).

Install

pip install keenable-haystack

Usage

from haystack_integrations.components.websearch.keenable import KeenableWebSearch
from haystack_integrations.components.fetchers.keenable import KeenableFetcher

# No key -> keyless public endpoints. Set KEENABLE_API_KEY to lift limits.
websearch = KeenableWebSearch(top_k=5)
hits = websearch.run(query="latest developments in AI agents")
print(hits["links"])

fetcher = KeenableFetcher()
pages = fetcher.run(urls=hits["links"][:2])
print(pages["documents"][0].content)

In a pipeline (drop-in for any web-search component):

from haystack import Pipeline
from haystack.components.builders import PromptBuilder

pipe = Pipeline()
pipe.add_component("search", KeenableWebSearch(top_k=5))
pipe.add_component("prompt", PromptBuilder(template="Answer using:\n{{ documents }}"))
pipe.connect("search.documents", "prompt.documents")

KeenableWebSearch.run accepts optional per-query filters (site, published_after/before, acquired_after/before, mode). There is no max_results: the API returns a fixed-size result set; top_k (constructor) trims it client-side.

Configuration

  • API key (optional). api_key=Secret.from_token(...) / the default Secret.from_env_var("KEENABLE_API_KEY", strict=False). Blank/unset → keyless public endpoints. Serializes by env-var name, never the key value.
  • Endpoint (optional). KEENABLE_API_URL overrides the base URL (HTTPS enforced; plain http only for loopback). The endpoint is never a component argument the model can set, so it cannot be used to redirect requests.

KeenableFetcher rejects non-http(s) schemes and private/internal hosts client-side before sending, and (like LinkContentFetcher) skips failed URLs by default — set raise_on_failure=True to surface errors instead.

License

MIT © Keenable

Release files for keenable-haystack 0.1.3

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

Source distribution (sdist)

Source distribution for keenable-haystack 0.1.3
File Size Uploaded
keenable_haystack-0.1.3.tar.gz 9.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for keenable-haystack 0.1.3
File Interpreter ABI Platform
keenable_haystack-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 21.5 kB

Release files / keenable_haystack-0.1.3.tar.gz

Download URL keenable_haystack-0.1.3.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
df90d26879cc91da49f4f2904ff3cdf2ad5419637f0cc56aa512f32a50149c85
BLAKE2b-256 checksum
How to use checksums
b3f0165de8e83febc15a8227fda07aa3233a5d58c4cf1dde070b3a50b68d367b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 15, 2026.

Transparency log

Release files / keenable_haystack-0.1.3-py3-none-any.whl

Download URL keenable_haystack-0.1.3-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
94a6d1f33634bf3c6e5acb045210b488e746287b2ea3ef4f0e731d30565eb9b5
BLAKE2b-256 checksum
How to use checksums
d13ad8656ed7d7a7cd8a44e5a426bb888a50407fc4cdc13901fd7aa7a8878b3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

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