[go: up one dir, main page]

Remaking the web for AI.

Read data and take actions. Call a typed function to access any site, no browser needed.

Get started
Install the
for
claude plugin marketplace add bowmark-ai/plugin claude plugin install bowmark@bowmark-ai

Remaking the web for AI.

Read data and take actions. Call a typed function to access any site, no browser needed.

Get started
Install the
for
claude plugin marketplace add bowmark-ai/plugin claude plugin install bowmark@bowmark-ai

The internet wasn’t built for AI

Bowmark converts everything to AI-readable code.

AI accesses the web programmatically.

  1. YouTubeyoutube.com
  2. Amazonamazon.com
  3. Calendlycalendly.com
  4. Google Mapsgoogle.com/maps
  5. Expediaexpedia.com

The internet wasn’t built for AI

  • 28 capabilitiesYouTube
    search()getVideo()getTranscript()listComments()getChannel()createPlaylist()addToPlaylist()getPlaylist()listChapters()getLiveChat()
    + 18 more
  • 4 capabilitiesCalendly
    getAvailability()getEventTypes()getBookingForm()findProfiles()
  • 11 capabilitiesGoogle Maps
    searchPlaces()searchNearby()getPlace()getDirections()listReviews()listPhotos()suggestPlaces()geocodeAddress()reverseGeocode()
    + 2 more
  • 15 capabilitiesAmazon
    searchProducts()getProduct()listReviews()listDeals()listBestSellers()listVariations()listNewReleases()getSeller()
    + 7 more
  • 4 capabilitiesExpedia
    searchHotels()getHotel()getRooms()listReviews()

Bowmark converts everything to AI-readable code.

AI accesses the web programmatically.
agent.ts
import { bowmark } from '@bowmark/web';

const stays = await bowmark.hotels.search(
  {
    location: 'Kyoto',
    checkIn: '2026-11-13',
    checkOut: '2026-11-16'
  }
);

AI accesses the web programmatically.

agent.ts
import { bowmark } from '@bowmark/web';

const stays = await bowmark.hotels.search(
  {
    location: 'Kyoto',
    checkIn: '2026-11-13',
    checkOut: '2026-11-16'
  }
);

Running code to find a hotel1s

AI accesses the web programmatically.

agent.ts
import { bowmark } from '@bowmark/web';

const stays = await bowmark.hotels.search(
  {
    location: 'Kyoto',
    checkIn: '2026-11-13',
    checkOut: '2026-11-16'
  }
);

Found a hotel2s

Hyatt Place Kyoto4.4★(2,345)∙Hotel
Best rate across 14 providers
$184/night

AI accesses the web programmatically.

48 capabilitiesYouTube
search()getVideo()getTranscript()listComments()getChannel()createPlaylist()addToPlaylist()getPlaylist()listChapters()getLiveChat()
+ 38 more
38 capabilitiesCalendly
getAvailability()getEventTypes()getBookingForm()findProfiles()
+ 34 more
18 capabilitiesGoogle Maps
searchPlaces()searchNearby()getPlace()getDirections()listReviews()listPhotos()suggestPlaces()geocodeAddress()reverseGeocode()
+ 9 more
24 capabilitiesAmazon
searchProducts()getProduct()listReviews()listDeals()listBestSellers()listVariations()listNewReleases()getSeller()
+ 16 more
4 capabilitiesExpedia
searchHotels()getHotel()getRooms()listReviews()

Up to 20x cheaper and 5x faster, with no browser needed.

Watch one task done both ways.

Choose a task

Finished run
Finished run
Finished run

Book a hotel

Prompt: “book me a hotel in Kyoto for 3 nights, under $200”.

Bowmark calls searchHotels and bookHotel and answers: Booked ✓ $184/night, Hyatt Place Kyoto · Oct 9 → Oct 12 · free cancellation · Confirmation K4Q7TM. Done — 3 nights at Hyatt Place Kyoto, $184 a night. Replay figures: 1,186 tokens, $0.02, 2.5 seconds.

A browser agent works through 12 steps in a web browser, ending blocked at captcha at “Solving captcha…”. Replay figures: 50,640 tokens, $0.91, 3:56.

BowmarkDone

2.5s
Tokens usedtokens
1,186
Cost
$0.02

Browser agentblocked at captcha

3:56
Tokens usedtokens
50,640
Cost
$0.91

Every capability.
One import.

Typed functions for 100+ popular sites, covering public catalogue data and other listed workflows. Amazon's public catalogue is not an account portal: orders and saved items need a supported login flow or an attended browser. These are a sample. Not your site? No provider is needed — read.page reads any public page and browser_agent drives the ones that need clicking or a sign-in. Check whether yours is covered.

  • Etsy.search()1 function
  • Best Buy.search()2 functions
    • Best Buy.getProduct()
  • eBay.search()1 function
  • Amazon.searchProducts()14 functions
    • Amazon.getProduct()
    • Amazon.listBestSellers()
    • Amazon.listDeals()
    • Amazon.getDeliveryEstimate()
    +9 more
  • Walmart.search()1 function
  • Target.search()2 functions
    • Target.findStore()
  • Chipotle.getBowlBuilder()1 function
  • Apple.search()25 functions
    • Apple.getProduct()
    • Apple.compareModels()
    • Apple.getPickupAvailability()
    • Apple.getTradeInEstimate()
    +20 more
  • Costco.search()1 function
  • lululemon.search()5 functions
    • lululemon.getProduct()
    • lululemon.getProducts()
    • lululemon.getSimilarProducts()
    • lululemon.getReviews()
  • Abercrombie & Fitch.search()4 functions
    • Abercrombie & Fitch.getProduct()
    • Abercrombie & Fitch.checkStock()
    • Abercrombie & Fitch.findStores()
  • J.Crew.searchProducts()3 functions
    • J.Crew.listCategories()
    • J.Crew.suggestSearchTerms()
  • Newegg.search()3 functions
    • Newegg.getProduct()
    • Newegg.checkStock()
  • Dell.searchForumThreads()1 function
  • Micro Center.search()1 function
  • B&H Photo.search()3 functions
    • B&H Photo.getProduct()
    • B&H Photo.checkStock()
  • Sam's Club.search()8 functions
    • Sam's Club.getProduct()
    • Sam's Club.checkStock()
    • Sam's Club.findClubs()
    • Sam's Club.browseCategory()
    +3 more
  • Poshmark.getBulkUploadTemplateGuide()2 functions
    • Poshmark.getZipFileGuide()
  • Whole Foods.search()1 function
  • Sears.search()2 functions
    • Sears.getProduct()
  • Marriott.findHotels()1 function
  • Expedia.searchHotels()4 functions
    • Expedia.getHotel()
    • Expedia.getRooms()
    • Expedia.listReviews()
  • Google Flights.search()3 functions
    • Google Flights.getBookingOptions()
    • Google Flights.getPriceGraph()
  • Google Maps.searchPlaces()11 functions
    • Google Maps.getDirections()
    • Google Maps.getPlace()
    • Google Maps.listReviews()
    • Google Maps.searchNearby()
    +6 more
  • IHG.search()1 function
  • Avis.searchLocations()2 functions
    • Avis.getLocation()
  • Resy.search()1 function
  • Yelp.search()1 function
  • DoorDash.search()1 function
  • ClassPass.getStudio()2 functions
    • ClassPass.getSchedule()
  • Disney World.getTicketPrice()1 function
  • Six Flags.getTickets()1 function
  • Flightradar24.getAirportArrivals()2 functions
    • Flightradar24.getAirline()
  • American Airlines.getFlightStatus()3 functions
    • American Airlines.retrieveBooking()
    • American Airlines.getBaggageAllowance()
  • Lufthansa.getFlightStatus()2 functions
    • Lufthansa.getBaggageAllowance()
  • Cars.com.search()2 functions
    • Cars.com.getModelResearch()
  • Cheapflights.search()4 functions
    • Cheapflights.getBookingOptions()
    • Cheapflights.searchHotels()
    • Cheapflights.searchCars()
  • Rover.searchBoarding()1 function
  • BC Parks.searchCampgrounds()2 functions
    • BC Parks.checkAvailability()
  • Lonely Planet.search()1 function
  • Airtable.createRecord()6 functions
    • Airtable.getRecord()
    • Airtable.listRecords()
    • Airtable.updateRecord()
    • Airtable.listBases()
    +1 more
  • YouTube.search()28 functions
    • YouTube.getTranscript()
    • YouTube.getVideo()
    • YouTube.getChannel()
    • YouTube.listComments()
    +23 more
  • Twitch.createHighlight()2 functions
    • Twitch.getVideo()
  • GitHub.listCommits()3 functions
    • GitHub.listReleases()
    • GitHub.getProfileReadme()
  • Reddit.search()5 functions
    • Reddit.getPost()
    • Reddit.getSubredditPosts()
    • Reddit.getSubreddit()
    • Reddit.searchSubreddits()
  • LinkedIn.searchJobs()4 functions
    • LinkedIn.getProfile()
    • LinkedIn.getCompany()
    • LinkedIn.getJob()
  • Calendly.getAvailability()4 functions
    • Calendly.getEventTypes()
    • Calendly.getBookingForm()
    • Calendly.findProfiles()
  • Wikipedia.search()1 function
  • Google News.searchNews()10 functions
    • Google News.topStories()
    • Google News.listTopicHeadlines()
    • Google News.listPublisherHeadlines()
    • Google News.getFullCoverage()
    +5 more
  • Google Translate.translate()13 functions
    • Google Translate.detectLanguage()
    • Google Translate.lookupWord()
    • Google Translate.getDefinitions()
    • Google Translate.romanize()
    +8 more
  • Bing.searchNews()2 functions
    • Bing.searchWebBrowser()
  • Cloudflare.comparePlans()2 functions
    • Cloudflare.compareTeamsPlans()
  • Microsoft Azure.getServicePricing()2 functions
    • Microsoft Azure.listServices()
  • npm.getDownloads()1 function
  • Y Combinator.getArticle()2 functions
    • Y Combinator.getBlogPost()
  • SoundCloud.search()3 functions
    • SoundCloud.getTrack()
    • SoundCloud.getPlaylist()
  • Yahoo Finance.getQuote()5 functions
    • Yahoo Finance.searchSymbols()
    • Yahoo Finance.getHistoricalPrices()
    • Yahoo Finance.getTrendingTickers()
    • Yahoo Finance.getMarketSummary()
  • Pinterest.searchPins()1 function
  • Namecheap.getWhois()1 function
  • PayPal.getFees()3 functions
    • PayPal.estimateFee()
    • PayPal.getCurrencyConversionQuote()
  • Amazon.searchProducts()14 functions
    • Amazon.getProduct()
    • Amazon.listBestSellers()
    • Amazon.listDeals()
    • Amazon.getDeliveryEstimate()
    +9 more
  • Airtable.createRecord()6 functions
    • Airtable.getRecord()
    • Airtable.listRecords()
    • Airtable.updateRecord()
    • Airtable.listBases()
    +1 more
  • Google Maps.searchPlaces()11 functions
    • Google Maps.getDirections()
    • Google Maps.getPlace()
    • Google Maps.listReviews()
    • Google Maps.searchNearby()
    +6 more
  • Walmart.search()1 function
  • YouTube.search()28 functions
    • YouTube.getTranscript()
    • YouTube.getVideo()
    • YouTube.getChannel()
    • YouTube.listComments()
    +23 more
  • Google Flights.search()3 functions
    • Google Flights.getBookingOptions()
    • Google Flights.getPriceGraph()
  • Apple.search()25 functions
    • Apple.getProduct()
    • Apple.compareModels()
    • Apple.getPickupAvailability()
    • Apple.getTradeInEstimate()
    +20 more
  • LinkedIn.searchJobs()4 functions
    • LinkedIn.getProfile()
    • LinkedIn.getCompany()
    • LinkedIn.getJob()
  • Calendly.getAvailability()4 functions
    • Calendly.getEventTypes()
    • Calendly.getBookingForm()
    • Calendly.findProfiles()
  • Etsy.search()1 function
  • GitHub.listCommits()3 functions
    • GitHub.listReleases()
    • GitHub.getProfileReadme()
  • Reddit.search()5 functions
    • Reddit.getPost()
    • Reddit.getSubredditPosts()
    • Reddit.getSubreddit()
    • Reddit.searchSubreddits()
  • Amazon.searchProducts()14 functions
    • Amazon.getProduct()
    • Amazon.listBestSellers()
    • Amazon.listDeals()
    • Amazon.getDeliveryEstimate()
    +9 more
  • Airtable.createRecord()6 functions
    • Airtable.getRecord()
    • Airtable.listRecords()
    • Airtable.updateRecord()
    • Airtable.listBases()
    +1 more
  • Google Maps.searchPlaces()11 functions
    • Google Maps.getDirections()
    • Google Maps.getPlace()
    • Google Maps.listReviews()
    • Google Maps.searchNearby()
    +6 more
  • Walmart.search()1 function
  • YouTube.search()28 functions
    • YouTube.getTranscript()
    • YouTube.getVideo()
    • YouTube.getChannel()
    • YouTube.listComments()
    +23 more
  • Google Flights.search()3 functions
    • Google Flights.getBookingOptions()
    • Google Flights.getPriceGraph()
  • Apple.search()25 functions
    • Apple.getProduct()
    • Apple.compareModels()
    • Apple.getPickupAvailability()
    • Apple.getTradeInEstimate()
    +20 more
  • LinkedIn.searchJobs()4 functions
    • LinkedIn.getProfile()
    • LinkedIn.getCompany()
    • LinkedIn.getJob()
  • Calendly.getAvailability()4 functions
    • Calendly.getEventTypes()
    • Calendly.getBookingForm()
    • Calendly.findProfiles()
  • Etsy.search()1 function
  • GitHub.listCommits()3 functions
    • GitHub.listReleases()
    • GitHub.getProfileReadme()
  • Reddit.search()5 functions
    • Reddit.getPost()
    • Reddit.getSubredditPosts()
    • Reddit.getSubreddit()
    • Reddit.searchSubreddits()
Provider group 1 of 3

Install for free

Create an account to start.

Assistants
In your code

Let your agent install it

Works in any agent. It finds its own setup path, asks you only for what a person must do, and remembers to check Bowmark before it touches the web.

Installation guidance

Already created an account? Get your API key. Full setup in the docs.

Need it for a team or enterprise? Book a call.

  1. Crawl. A crawler loads the site thousands of times and works through every feature on it, pulling out the calls behind each one: JS APIs, GraphQL, protobufs and websockets.
  2. Embed. Every captured call becomes a node in a graph database, and calls that work together are joined by edges. Embeddings place similar calls close together, so groups form on their own.
  3. Clean. Some calls belong to no feature: analytics pings, ads and heartbeats. The LLM drops these outliers, so only the real pieces of each feature remain.
  4. Circle. An LLM draws a circle around each group and names the feature it performs: search, add to cart and view product.
  5. Assemble. For each group, the LLM writes one interface and fits its nodes and edges together like puzzle pieces, into a single function.
  6. Run natively. The finished functions load into the Bowmark Library and run natively in Node.js, with no browser at all.

How a website becomes functions

Bowmark for your team.

For teams and enterprises. Bring the sites and workflows your agents need, and leave with a plan.

Talk to the founder

Running agents across a team or inside your own product? Tell us what they need to do on the web and we'll scope it with you.

  1. Sites built for youWe add and maintain the sites your agents depend on.
  2. Your own MCPA branded MCP that puts your product in front of every AI assistant.
  3. Signed-in workAgents act inside the accounts your team already uses.
  4. Pricing for your volumeUsage terms that fit how much your agents run.

Fair questions.

More in the docs, or write to support@bowmark.ai.

Is this a crawler or a scraper?

Not in the way you might expect. Instead of your agent loading and reading pages every time, Bowmark describes what a site can do as typed functions — like searchFlights() or bookHotel() — that return structured results. Your agent calls the function rather than driving a browser.

How is Bowmark different from Firecrawl, Exa or Tavily?

They solve different jobs. Exa and Tavily find information when you don't know where it lives. Firecrawl turns pages you already know into clean text. Bowmark does things on a specific website: search its flights, read a thread with its comments, check stock, or act inside an account you are signed in to.

For open-ended research across sites you don't know yet, or for crawling a whole site into text, use those tools. They are good at it.

Is Bowmark a Browserbase alternative? How is it different from Browserbase or Browser Use?

Browserbase and Browser Use give your agent a browser to drive. The agent decides where to click, waits for each page, and reads what comes back. That suits a site nobody has modelled yet, or a one-off flow.

Bowmark gives your agent the site's functions instead, like searchFlights(), and hands back typed results. Each function is tested on a schedule, so your agent does not have to learn the page every time.

You can use both: Bowmark for the sites it covers, a browser for the rest.

Which agents does it work in?

ChatGPT, Claude, Claude Code, Codex, GitHub Copilot and Cursor, plus anything else that speaks MCP. Windsurf works through the generic MCP setup. In your own code you can use the TypeScript or Python client, or HTTP.

Setup for each one is in Connect.

What does it cost?

Free to start, then metered.

Current details are in the docs.

Does it use up my tokens?

Your model still spends tokens on the conversation and on the results it reads. Because a capability returns compact, typed data rather than whole web pages, there is usually far less for it to read than when it works through a browser step by step.

What if the site I want isn’t covered?

Your agent can read any page directly with `bowmark.read.page(url)`, no provider needed. Tell us the site and what you want to do on it at support@bowmark.ai to request a typed provider, which stores logins and speeds up future runs.

Can I use this for my business?

Yes. For business questions, write to support@bowmark.ai.

Can it run on a schedule, unattended?

Yes. Bowmark itself has no scheduler, but you can call it from one using HTTP or an SDK. Connect it to Zapier, Make, a cron job, or your own service to run recipes daily or on any schedule you need.

Full details, with examples for Zapier and Make.