Bitcoin Well APIbitcoinwell.com ↗
Access live Bitcoin prices in CAD and USD, Bitcoin Well ATM locations across Canada by province or city, and blog posts via 8 structured endpoints.
What is the Bitcoin Well API?
The Bitcoin Well API exposes 8 endpoints covering live BTC/CAD and BTC/USD pricing, Bitcoin ATM locations across Canada and the US, and blog content. The get_atm_locations endpoint returns every ATM in a single response with coordinates, hours, services, and storefront images. Price endpoints include buy/sell prices with spread and hourly OHLC chart data, making the API useful for both location-finding tools and price-tracking applications.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/e62c6de9-961b-4415-b211-4961d6419a31/get_atm_locations' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace bitcoinwell-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.bitcoin_well_api import BitcoinWell, Province, Atm, BitcoinPrice, BlogPost, ProvinceResult
client = BitcoinWell()
# Get BTC price in CAD
cad_price = client.bitcoinprices.cad()
print(cad_price.symbol, cad_price.price, cad_price.buy_price, cad_price.sell_price)
# Get ATMs in Calgary
for atm in client.atms.by_city(city="Calgary"):
print(atm.name, atm.address, atm.hours, atm.services)
# Get ATMs grouped by city for a province using the Province enum
province_data = client.provinceresults.get(province=Province.ALBERTA)
for city_group in province_data.cities:
print(city_group.name)
for atm in city_group.atms:
print(atm.name, atm.address)
# Check latest blog posts
for post in client.blogposts.list():
print(post.title, post.publication_date, post.author.full_name)
Get all Bitcoin ATM locations in Canada and US from the map widget. Returns all locations in a single response.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer total number of ATM locations",
"locations": "array of ATM location objects"
},
"sample": {
"data": {
"total": 166,
"locations": [
{
"id": "lv789dsr",
"name": "Bitcoin Well Head Office",
"hours": "Mon-Fri: 9:00am - 5:00pm",
"image": "https://files.elfsight.com/storage/4438b9c8-44e4-4e74-874a-51da3c9bd8f2/880b4660-96a8-4e95-94e3-d710ffd00b9e/unnamed.png",
"phone": "+1 (555) 012-3456",
"address": "10142 82 Avenue NW Edmonton Alberta T6E 1Z4",
"services": "Buy bitcoin only",
"coordinates": "53.518477635226986, -113.49231396969877"
}
]
},
"status": "success"
}
}About the Bitcoin Well API
ATM Location Data
The get_atm_locations endpoint returns the full ATM network in one response — each location object includes id, name, address, phone, hours, coordinates, services, and an image URL. For geographic drill-down, get_atm_locations_by_province accepts a province string (e.g. Alberta, Ontario, British-Columbia) and returns ATMs grouped by parsed city name. get_atm_locations_by_city searches all ATM addresses for a city name match and returns the matching marker objects. Note that large cities with many ATMs may occasionally time out. The get_atm_filter_types endpoint returns the list of service category strings ATMs can be filtered by.
Individual ATM Details
The get_atm_detail endpoint takes a slug in the format province/city/atm-slug — for example, alberta/calgary/pine-creek-convenience — and returns a single ATM record with id, location, address, phone, hours, coordinates, and an optional image URL. Slugs are typically constructed from the province, city, and business name.
Bitcoin Price Data
get_bitcoin_price_cad and get_bitcoin_price_usd both return the current price (market rate as a string), buy_price and sell_price as numbers that include the spread, a spread percentage as a decimal string, the symbol (BTC/CAD or BTC/USD), and a chart_data array of hourly OHLC objects with datetime, open, high, low, and close fields. The chart data covers recent hourly intervals, making it suitable for plotting short-term price movement alongside the live quote.
Blog Content
get_blog_posts returns all recent posts in reverse chronological order. Each post object includes slug, title, description, author, coverImage, and publicationDate. The response also includes a hasMore boolean to indicate whether additional posts exist beyond what was returned.
The Bitcoin Well API is a managed, monitored endpoint for bitcoinwell.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bitcoinwell.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official bitcoinwell.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Bitcoin ATM finder map for Canada using coordinates and address fields from
get_atm_locations - Display live BTC/CAD and BTC/USD buy and sell rates with spread on a currency conversion widget
- Plot hourly Bitcoin price charts using the OHLC
chart_dataarray from the price endpoints - Filter ATMs by service type using the categories returned by
get_atm_filter_types - Show city-level ATM availability by province for a travel or financial services app
- Sync Bitcoin Well blog content to a news aggregator or fintech publication feed
- Look up operating hours and contact phone number for a specific ATM using
get_atm_detailwith a known slug
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Bitcoin Well have an official public developer API?+
What does `get_atm_locations_by_province` return, and which provinces are confirmed to work?+
name and an atms array of ATM marker objects for that city. Confirmed working province values include Alberta, Manitoba, Ontario, British-Columbia, Saskatchewan, Quebec, and Nova Scotia (abbreviated as N in the parameter list). The province string is echoed back in the response.Does the API cover Bitcoin ATM locations in the United States?+
get_atm_locations endpoint returns all locations including any US locations present in the Bitcoin Well network. However, the province-based filtering endpoints are oriented toward Canadian provinces, so US-based filtering is not currently a dedicated feature. You can fork this API on Parse and revise it to add a US state filtering endpoint.Does the price data include historical prices beyond the hourly OHLC chart window?+
get_bitcoin_price_cad and get_bitcoin_price_usd endpoints return a live quote and a chart_data array of recent hourly OHLC intervals. Longer historical price series are not exposed. You can fork this API on Parse and revise it to add a historical data endpoint if the source makes that available.Are there any known timeout or coverage limitations with the ATM endpoints?+
get_atm_locations_by_city endpoint searches all ATM addresses for a city name match, and large cities with high ATM density may occasionally time out upstream. All ATM endpoints return data without pagination — the full result set is returned in a single response, which can be large for get_atm_locations.