
Remaking the web for AI.
Read data and take actions. Call a typed function to access any site, no browser needed.
Get startedclaude plugin marketplace add bowmark-ai/plugin
claude plugin install bowmark@bowmark-aiUp to 20x cheaper and 5x faster, with no browser needed.
Watch one task done both ways.
Choose a task
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
- Tokens usedtokens
- 1,186
- Cost
- $0.02
Browser agentblocked at captcha
- Tokens usedtokens
- 50,640
- Cost
- $0.91
Every capability.
One import.
Typed functions for 100+ popular sites, plus read/write access to any site on the web. These are a sample. 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+9 more- Amazon.getProduct()
- Amazon.listBestSellers()
- Amazon.listDeals()
- Amazon.getDeliveryEstimate()
Walmart.search()1 function
Target.search()2 functions- Target.findStore()
Chipotle.getBowlBuilder()1 function
Apple.search()25 functions+20 more- Apple.getProduct()
- Apple.compareModels()
- Apple.getPickupAvailability()
- Apple.getTradeInEstimate()
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+3 more- Sam's Club.getProduct()
- Sam's Club.checkStock()
- Sam's Club.findClubs()
- Sam's Club.browseCategory()
Poshmark.getBulkUploadTemplateGuide()2 functions- Poshmark.getZipFileGuide()
Whole Foods.search()1 function
Sears.search()2 functions- Sears.getProduct()
Marriott.findHotels()1 functionExpedia.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+6 more- Google Maps.getDirections()
- Google Maps.getPlace()
- Google Maps.listReviews()
- Google Maps.searchNearby()
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+1 more- Airtable.getRecord()
- Airtable.listRecords()
- Airtable.updateRecord()
- Airtable.listBases()
YouTube.search()28 functions+23 more- YouTube.getTranscript()
- YouTube.getVideo()
- YouTube.getChannel()
- YouTube.listComments()
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+5 more- Google News.topStories()
- Google News.listTopicHeadlines()
- Google News.listPublisherHeadlines()
- Google News.getFullCoverage()
Google Translate.translate()13 functions+8 more- Google Translate.detectLanguage()
- Google Translate.lookupWord()
- Google Translate.getDefinitions()
- Google Translate.romanize()
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+9 more- Amazon.getProduct()
- Amazon.listBestSellers()
- Amazon.listDeals()
- Amazon.getDeliveryEstimate()
Airtable.createRecord()6 functions+1 more- Airtable.getRecord()
- Airtable.listRecords()
- Airtable.updateRecord()
- Airtable.listBases()
Google Maps.searchPlaces()11 functions+6 more- Google Maps.getDirections()
- Google Maps.getPlace()
- Google Maps.listReviews()
- Google Maps.searchNearby()
Walmart.search()1 function
YouTube.search()28 functions+23 more- YouTube.getTranscript()
- YouTube.getVideo()
- YouTube.getChannel()
- YouTube.listComments()
Google Flights.search()3 functions- Google Flights.getBookingOptions()
- Google Flights.getPriceGraph()
Apple.search()25 functions+20 more- Apple.getProduct()
- Apple.compareModels()
- Apple.getPickupAvailability()
- Apple.getTradeInEstimate()
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+9 more- Amazon.getProduct()
- Amazon.listBestSellers()
- Amazon.listDeals()
- Amazon.getDeliveryEstimate()
Airtable.createRecord()6 functions+1 more- Airtable.getRecord()
- Airtable.listRecords()
- Airtable.updateRecord()
- Airtable.listBases()
Google Maps.searchPlaces()11 functions+6 more- Google Maps.getDirections()
- Google Maps.getPlace()
- Google Maps.listReviews()
- Google Maps.searchNearby()
Walmart.search()1 function
YouTube.search()28 functions+23 more- YouTube.getTranscript()
- YouTube.getVideo()
- YouTube.getChannel()
- YouTube.listComments()
Google Flights.search()3 functions- Google Flights.getBookingOptions()
- Google Flights.getPriceGraph()
Apple.search()25 functions+20 more- Apple.getProduct()
- Apple.compareModels()
- Apple.getPickupAvailability()
- Apple.getTradeInEstimate()
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()
Install for free
Create an account to start.
Create an accountLet 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.
Already created an account? Get your API key. Full setup in the docs.
Need it for a team or enterprise? Book a call.
- 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.
- 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.
- 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.
- Circle. An LLM draws a circle around each group and names the feature it performs: search, add to cart and view product.
- Assemble. For each group, the LLM writes one interface and fits its nodes and edges together like puzzle pieces, into a single function.
- 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.
- Sites built for youWe add and maintain the sites your agents depend on.
- Your own MCPA branded MCP that puts your product in front of every AI assistant.
- Signed-in workAgents act inside the accounts your team already uses.
- Pricing for your volumeUsage terms that fit how much your agents run.
or write to support@bowmark.ai
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.
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.







