# Providers (/docs/providers)

import { Callout } from "fumadocs-ui/components/callout";
import { ProviderCoverageSearch } from "@/components/docs/provider-coverage-search";
import { ProviderCoverageList } from "@/components/docs/provider-coverage-list";

<Callout type="info" title="Checking one site">
  To check whether one site is covered, call
  `GET https://api.bowmark.ai/v1/library?query=<hostname>` (with
  `Authorization: Bearer $BOWMARK_API_KEY`). It answers yes or no for that site,
  including "No Bowmark provider is written for this site". With no key, read
  [`PROVIDERS-SIMPLE.txt`](https://raw.githubusercontent.com/bowmark-ai/web/main/PROVIDERS-SIMPLE.txt),
  one line per site. The full site list on this page loads only in a browser, so a summary of
  this page cannot tell you that a site is missing.
</Callout>

**No dedicated provider for your site? You very likely don't need one.** Two generic
capabilities cover most "unlisted site" cases with no per-site adapter at all:

* **[`bowmark.read.page(url)`](/docs/how-it-works#no-provider-read-any-page-directly)** — reads any page as plain content.
* **`bowmark.products.getAvailability(url)`** — reads a product page's price and stock off its schema.org `Product`/`Offer` markup, or through Bowmark's own provider for that store (today Target and Amazon.com). Many large marketplaces publish no such markup; there it returns `source: "none"`, and `read.page` plus your own parsing is the way. See [Scripting § A product page's price and stock](/docs/scripting#a-product-pages-price-and-stock--productsgetavailability).

Try one of these before assuming a site isn't covered — a dedicated provider is only
worth writing when a site needs more than a page read or an availability check. Writing
one is not self-serve either way — providers ship from inside Bowmark's own engineering
process. See [Quickstart § The site I need isn't
supported](/docs/quickstart#the-site-i-need-isnt-supported) for driving interaction-gated
flows with `bowmark.browser_agent`, or emailing
[support@bowmark.ai](mailto:support@bowmark.ai) — every request like that is tracked as
demand and prioritized.

**Need a set of sites built for your team, on a timeline?** That's the
[team plan](/#enterprise) — [book a call](https://calendly.com/christopher-bowmark-ai/bowmark-discovery)
and we'll scope it with you, rather than queuing one request at a time.

The rest of this page is for the other case — checking or browsing what IS covered.

## Check coverage

**Not sure if we cover a site?** Query by hostname for a definitive yes/no: `GET https://api.bowmark.ai/v1/library?query=<hostname>` if you have an API key, or use the search below if you're in a browser. The live query is always current and tells you exactly which domain a provider covers — e.g. `bowmark.providers.amazon` covers `www.amazon.com` only, not `amazon.co.uk` or `amazon.com.br`.

In a browser, search for a specific site or browse the full list below:

<ProviderCoverageSearch />

**All supported sites:**

<ProviderCoverageList />

## Example providers

Bowmark provides access to hundreds of sites and services through **providers** — reusable functions that let you read or act on a specific site. Here are a few examples so a reader with no browser has something concrete to check against:

* **LinkedIn** (`linkedin.*`) — `getProfile`, `searchPeople`, `searchJobs`, `getJob`,
  `getCompany`
* **Amazon** (`amazon.*`) — `searchProducts`, `getProduct` — **`www.amazon.com` (US) only**, not other country sites
* **Reddit** (`reddit.*`) — `search`, `getPost`
* **KAYAK** (`kayak.*`) — `search` (flights), `searchHotels`

**Every name below is shorthand for its full call path.** Inside a `run` script, call it as
`bowmark.providers.<site>.<fn>(...)` — the `providers.` segment is part of the path, not
optional. `linkedin.getProfile` above means `bowmark.providers.linkedin.getProfile(...)`.
Dropping that segment is the single most common mistake reported against this page; it
fails with `unknown capability or provider`, and that error now names the call you meant.

For the full list — every site, every capability, machine-readable — query the live API. It is always current and you may already have a key:

```bash
curl -sS "https://api.bowmark.ai/v1/library" \
  -H "Authorization: Bearer $BOWMARK_API_KEY"
```

The response includes every provider and capability with full function signatures and descriptions. Send `Accept: application/json` for machine-readable output.

## Query the live catalog

If you have Bowmark credentials, you can also query the coverage programmatically:

```bash
curl -sS "https://api.bowmark.ai/v1/library?query=shopping" \
  -H "Authorization: Bearer $BOWMARK_API_KEY"
```

The `Authorization` header is not optional — there is no anonymous tier, and the endpoint
401s without it. See [HTTP API](/docs/api).

The response includes every capability and provider matching your query, with full function signatures and descriptions.

<Callout type="info" title="Looking for a specific site?">
  Query the API above with a domain name or site phrase — it's the reliable way to check
  one site, for a person or a fetch tool. If you don't have an API key, use
  [`PROVIDERS-SIMPLE.txt`](https://raw.githubusercontent.com/bowmark-ai/web/main/PROVIDERS-SIMPLE.txt)
  instead of the full PROVIDERS.md — the full list is thousands of rows and can truncate
  in fetch tools, while the simpler version lists every site and its functions without
  truncating.
</Callout>
