---
canonical_url: "https://docs.composio.dev/toolkits/keenable"
markdown_url: "https://docs.composio.dev/toolkits/keenable.md"
product: "platform"
version: null
last_updated: null
---

# Keenable

Keenable provides web search and page extraction APIs with authenticated production routes and keyless public evaluation routes.

- **Category:** ai web scraping
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 4
- **Triggers:** 0
- **Slug:** `KEENABLE`
- **Version:** 00000000_00

## Tools

### Fetch URL

**Slug:** `KEENABLE_FETCH_URL`

Fetch one public web URL as extracted markdown with the connected Keenable workspace; the authenticated call consumes a fetch credit and can use indexed or live retrieval.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Absolute public HTTP(S) page URL to fetch. Localhost, metadata hosts, and obvious non-public literal IP addresses are rejected. |
| `live` | boolean | No | Set true to fetch directly from the source instead of using the indexed copy; authenticated live retrieval uses the fetch.live billing SKU. |
| `prompt` | string | No | Optional extraction instruction (maximum 2,000 characters). When set, content contains the extraction output instead of the full page markdown. |
| `max_chars` | integer | No | Maximum extracted content characters (minimum 1; default 50,000). Longer content is truncated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Fetch URL Publicly

**Slug:** `KEENABLE_FETCH_URL_PUBLIC`

Fetch one public web URL as extracted markdown without an API key through Keenable's public evaluation pool; calls consume no credits but share a per-IP quota.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Absolute public HTTP(S) page URL to fetch. Localhost and literal private, loopback, link-local, reserved, multicast, unspecified, and metadata targets are rejected before the request. |
| `live` | boolean | No | Set true to fetch directly from the source instead of using the indexed copy. |
| `prompt` | string | No | Optional extraction instruction (maximum 2,000 characters); content then contains the extraction output rather than the full page markdown. |
| `max_chars` | integer | No | Maximum extracted content characters (minimum 1; default 50,000). Longer content is truncated. |
| `keenable_title` | string | Yes | Application name sent as X-Keenable-Title on this keyless request (1-256 characters). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Web

**Slug:** `KEENABLE_SEARCH_WEB`

Search the web with the connected Keenable workspace and return one bounded, ranked result set. This authenticated call consumes one search credit and may fail with 402 when credits are exhausted. Results are not paginated; max_results limits this single response.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("pro" | "realtime") | No | Search mode: pro performs deeper retrieval; realtime prioritizes speed. |
| `site` | string | No | Restrict results to one domain, such as techcrunch.com. |
| `query` | string | Yes | Non-blank web search query. |
| `query_time` | string | No | Date or ISO 8601 timestamp for a point-in-time index snapshot; pages acquired later are excluded and relative filters rebase to this instant. |
| `max_results` | integer | No | Maximum results in this single non-paginated response (1-50). |
| `acquired_after` | string | No | Inclusive lower acquisition-time bound as YYYY-MM-DD, an ISO 8601 timestamp, or a relative delta using min, h, d, mo, or y. |
| `acquired_before` | string | No | Inclusive upper acquisition-time bound as YYYY-MM-DD, an ISO 8601 timestamp, or a relative delta; a bare date includes the full UTC day. |
| `published_after` | string | No | Inclusive lower publication-time bound using the same documented formats as acquired_after. |
| `published_before` | string | No | Inclusive upper publication-time bound using the same documented formats as acquired_before. |
| `snippet_max_length` | integer | No | Maximum characters in each result snippet (180-10,000). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Web Publicly

**Slug:** `KEENABLE_SEARCH_WEB_PUBLIC`

Search the web without an API key through Keenable's public evaluation pool. Calls consume no credits, share a per-IP pool of 1,000 requests per hour and at most 10 requests per second, and require an application title.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("pro" | "realtime") | No | Search mode: pro performs deeper retrieval; realtime prioritizes speed. |
| `site` | string | No | Restrict results to one domain, such as techcrunch.com. |
| `query` | string | Yes | Non-blank web search query. |
| `query_time` | string | No | Date or ISO 8601 timestamp for a point-in-time index snapshot; pages acquired later are excluded and relative filters rebase to this instant. |
| `max_results` | integer | No | Maximum results in this single non-paginated response (1-50). |
| `acquired_after` | string | No | Inclusive lower acquisition-time bound as YYYY-MM-DD, an ISO 8601 timestamp, or a relative delta using min, h, d, mo, or y. |
| `keenable_title` | string | Yes | Application name sent as X-Keenable-Title on this keyless request (1-256 characters). |
| `acquired_before` | string | No | Inclusive upper acquisition-time bound as YYYY-MM-DD, an ISO 8601 timestamp, or a relative delta; a bare date includes the full UTC day. |
| `published_after` | string | No | Inclusive lower publication-time bound using the same documented formats as acquired_after. |
| `published_before` | string | No | Inclusive upper publication-time bound using the same documented formats as acquired_before. |
| `snippet_max_length` | integer | No | Maximum characters in each result snippet (180-10,000). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
