search_towns
Search surf towns
Find surf towns by name/country text, region, month with good surf, surfer level and wave type. All filters are optional; results are ranked most popular first (popularity.rank 1 = best known: Wikipedia readership, places to stay and surf spots) and include best months, water temperature, number of curated surf spots and a page URL. With a month, the towns are ranked by how good that month's surf measured over the last three years (good + great days) and each has inMonth: goodDays and greatDays (% of days rated Good or better, Great or better, at the town's best spot), seaTempC and waveHeightM (null where not measured yet).
Parameterslevellimitmonthqueryregioncountrybreak_typeinclude_towns_without_spots
Full profile of one surf town: description, season, water temperature, wave types, levels and curated surf spots (each with its type, level, the way its coast faces in degrees (facing), its best tide where known (tide, e.g. "low to mid, rising", with tideSources), a reviewed, freely licensed photo of surf at that break from Wikimedia Commons when one exists, with author and licence, and reviewed YouTube surf clips filmed there: clips[].url). `dataQuality` says how far to trust the town's data (trust 0–100 and level high/medium/low, when it was last checked against sources, how many spots are verified, open audit warnings): tell the user when trust is low or the data was never checked. `surfByMonth` gives, for each month, how often the surf was good there, measured over the last three years (goodDays, greatDays: % of days rated Good or better / Great or better at the best spot; seaTempC: the mean sea temperature measured by satellite, NASA JPL MUR SST; waveHeightM), with its source: use it for "when should I go" and say it is measured, not a forecast.
Parametersslugrequired
find_surf_spots
Find surf spots
Curated surf spots with exact coordinates, break type, direction and level. Search within a town (slug) or around any point (lat/lng + radius_km), sorted by distance.
Parameterslatlngtowntypelevellimitradius_km
nearby_places
Places near a surf town
Places around a surf town, sorted by distance: stay (Places to stay), coffee (Coffee), food (Food & drinks), surf (Surf shops & schools), spots (Surf spots (community mapped)). Stays are a saved, merged OpenStreetMap + Overture Maps collection (hotels, resorts, hostels, surf camps, guesthouses, homestays, B&Bs, holiday rentals, villas, camping) with website, phone, email, socials, stars, rooms and facilities where known. Cafés, food and surf shops/schools are a saved Overture Maps collection too; community-mapped surf spots are a live OpenStreetMap lookup. Places with a reviewed, freely licensed photo (Wikimedia Commons) include it as photo { url, page, author, license }.
Parameterskindtownrequiredlimitcategoryradius_km
town_feed
What's new in a surf town
The town's Feed: what's new there, and what Swell Cabin's data says. insights: Swell Cabin's own cards worked out from the live forecast and what's on (today's surf in plain words, the best day this week with a 7-day wave chart, go early before the wind, swell building or dropping, a beginner or experts-only day with the spots for that level, what's on tonight, upcoming events, the season and the wetsuit for this month), each { key, kind, label, title, text, chart? }. posts: recent public Bluesky and Mastodon posts about surfing the town (text, photo or link, likes, replies, link to reply). recentVideos: YouTube videos about surfing the town from the last 30 days, newest first (at most two per channel), with links to watch, whether each is portrait (a Short), its duration in seconds, views and likes; videosAt: when they were fetched from YouTube (each town's videos are fetched at most once a day, the every-town ones every 12 hours, to stay within YouTube's quota; null when there are none yet). instagramPosts: the latest posts from the town's Instagram pages and its region's (instagramAccounts: e.g. the surf club, surf schools and shops, and regional pages such as a national surf-cam network, which carry region "zone:…" or "country:XX"; pages are found and ranked from measured activity, engagement, surf focus and the places their posts name), newest first (at most 4 from one page), with likes, comments, video (every reel's mp4 to play: from Business Discovery, or from the reel's public embed page when that leaves it out) and a link to like or comment on Instagram. articles: the newest articles from the major surf magazines (Surfer, Stab, BeachGrit, Surfer Today, The Surfer's Journal, Tracks, Carve, SurfGirl, Freesurf, Eastern Surf, Zigzag, and in French, Portuguese and Spanish Surf Session, ONFIRE, Waves and Surfer Rule; never Surfline) that name the town or one of its breaks (an article about Pipeline is Haleiwa's, one about Cloud 9 General Luna's), from the last 21
Parameterstownrequiredlimitreviewexcludelanguages
surf_forecast
Surf forecast
Live 7-day surf forecast for a surf town and each of its spots, rated hour by hour for that spot (rating Flat, Poor, Fair, Good, Great or Epic with a 0–10 score and the reasons why, from the way the spot's coast faces, the swell trains, their period and the wind against the coast): per day the rating, the best time window (best.from–best.to, local time, which already accounts for the tide), what to expect in surfers' words (body: 'Chest to head high', surface: Glassy/Clean/Fair/Bumpy/Choppy/Blown out), breaking surf height (surf [min, max] m), wave height range, swell height, period and direction, wind, high and low tides with heights (predicted from the nearest tide gauge: see `tide`, or approximate from the ocean model where there is none), sunrise/sunset, water temperature (the ocean model's, set to the newest satellite measurement at the town: `water` says how, with source 'satellite' and the satellite's day, 'climate' when only this month's measured difference was used, or 'model'; months: the measured mean by month) and confidence (high/medium/low: three wave models compared, ECMWF, Météo-France and NOAA, with their figures in models; a model the town's buoy has shown to be far off there is left out), and, when the models differ on a day's size by 20% or more, `range` (wave [min, max] m at sea, surf [min, max] m at the spot, body in surfers' words); the town's days name the best spot (bestSpot). `accuracy`, where the town has a buoy (NOAA, Queensland Government, E.U. Copernicus Marine or Israel Oceanographic & Limnological Research): how often the forecast was within 20% of it over the last weeks, whether sizes are corrected for the model's bias there (method 'ratio', or 'power' with fit { k, beta }: the correction depends on size), at which spots (correctedSpots: those facing the same sea as the buoy), the swell period's record and correction (period: within15 is the share of hours within 1.5 s, offset the seconds added), each wave model's own record at the b
Parametersspottownrequired
Live surf cams for a town or one of its surf spots: free cams (e.g. MEO Beachcam and Surftotal in Portugal, Viewsurf and GoSurf in France, Beach Cam Israel, WaveHub and GoSurf Israel, council, surf-school and YouTube live cams) and premium ones (Surfline), each with when it was last checked, whether it was up, when a browser last saw it play a real picture (verifiedPlaying) and whether it is video (live: true) or still pictures (live: false), and embed: how Swell Cabin shows it on its own pages where the operator allows that (kind youtube: the YouTube player URL; kind still: the SkylineWebcams picture that updates every 5 minutes, from the still API; kind player: the operator's own player, which the operator agreed Swell Cabin may show, with the date they agreed (permission); null: a link only, e.g. MEO Beachcam, whose terms keep the stream its own); pinNote explains where a network pins the cam in the wrong place. `networks` are the local cam networks that cover the town (worth checking for spots without a saved cam). Only cams Swell Cabin opened and checked are listed (Surfline last); no search links. For spots without a saved cam, `search` lists the checked networks that cover the town.
Parametersspottownrequired
surf_pools
Surf pools (wave pools)
Wave pools and surf lakes open to the public (The Wave Bristol, URBNSURF, Alaïa Bay, Atlantic Park, DSRT Surf...): city, country, coordinates, wave technology where published (e.g. Wavegarden Cove), levels, website, notes (address, seasons), the date each was last checked and the published sources it was checked against. Give a town slug (pools within 250 km, nearest first, with km), lat and lng (with radius_km), a country code, or nothing for all of them. Pools are inland: they work when the sea is flat, and are good for beginners and for training.
Parameterslatlngtownlevelcountryradius_km
whats_on
What's on in a surf town
What happens each night in a surf town (weekly schedule: parties, live music, DJs, comedy, movie nights, games, salsa, markets, culture) and upcoming dated events, with a short summary of the scene and the source of every entry. Defaults to tonight and the coming week, in the town's local time. Some towns aren't covered yet (covered: false).
Parametersdaytownrequired
surf_now
Where the surf is good now
Where the surf is good around the world in the next days: every town whose best day from today up to within_days ahead is at least min_rating, best and soonest first, each with that day (rating Flat … Epic at its best spot, the spot, its best time, the surf in surfers' words, how sure the forecast is, and when: today, tomorrow or the weekday in the town's own time) and today's rating. From Swell Cabin's forecast for every town, worked out twice a day (generated says when; stale is true when it is more than 36 hours old). Use it for "where is it good right now / this weekend", then surf_forecast for one town's full forecast, and share each town's url.
Parameterslimitregionmin_ratingwithin_days
cam_now
What the surf cams show right now
What the surf cams show right now, spot by spot: every 3 hours in daylight an AI reads a still from each free surf cam Swell Cabin can read and says what it shows in the forecast's own words (words: 'Waist to chest high'; surface: Glassy, Clean, Fair, Bumpy, Choppy or Blown out; shape, how the waves break: Peeling, Peaky, Mushy, Messy or Closing out, null on readings from before it was read; crowd: none, a few or many surfers out; sure: high or medium) and what that means at that spot for its level (verdict good, fair, poor or flat; label Looks good, Surfable, Looks poor, Flat; reason small or big when the size doesn't suit it, shape when waves that close out or break messy keep it at Surfable). Each reading has its time (and local: the town's clock), the cam's page (cam, provider), what our forecast said for that spot and hour (forecast.words, rating, steps: + when the forecast said bigger) and the nearest buoy's reading. Only readings from the last 3 hours are given; a reading the nearest buoy says can't be right is left out (leftOut, with why). These are an AI's readings of a picture, not measurements: say so, give the time, and link the cam. Each spot has a score (0–10, like the forecast's rating: size on one scale for every spot × surface × how the waves break × surfers out, the mean of its cams), cams (how many were read) and rank (the reader's side-by-side rank in the town, 1 looks best, when two or more spots were read). best is what looks best across the town's cams (the rank, else the score); standout is that same reading only when the reader ranked it first on its own and it looks good or surfable (null otherwise: scores of separate readings never name one): use it to answer "which spot looks best right now in …", and when standout is null say the cams don't show one clearly ahead. With a town, that town's spots, best looking first (readings is empty when no cam was readable lately: use surf_forecast); without one, every town with a reading now, best look
Parametersgoodtown
social_posts
Swell Cabin's social posts
What Swell Cabin posts on social media, worked out from its own data: swell alerts (a swell building to 1.5 m or more with a Good-or-better day in it, on days the three wave models agree on), the best day this week (Good or better, and big enough for the word: Good from waist high, Great from chest high, Epic from head high), the weekend's best-rated towns, a town's surf season opening, surf events, the evergreen kinds (where to surf this month: the best-known towns in season with the water and wetsuit; a town spotlight from its own record; about Swell Cabin, in its own numbers), and the weekly stories (swell on the move: a long-period swell reaching towns of one region in the order it arrives; the week ahead in numbers on Mondays; the local surf scene, a town's reviewed local accounts, on Tuesdays; learn to surf this weekend on Thursdays; surf by day, out by night on Fridays; the spot of the week with a reviewed, credited surf clip on Saturdays). Cards show the town's or spot's reviewed, freely licensed photo with its credit; a list's towns follow as photo slides; a post for a spot with a reviewed clip shares the clip as its video. With a town: the posts it would make about that town now, best first, each written for Instagram, Facebook, Threads, X, Bluesky and Mastodon with its time (UTC, in the town's morning or evening), link, card image (a PNG drawn from the same facts: card for a feed post, story for 9:16) and the facts every number comes from. Without a town: the latest daily proposal across every town (the owner approves it; the approved posts go out through Buffer) and the posts already scheduled. A post names a surf spot only when it is well known (it has a cam or surf clips), and never says today or tomorrow (it goes out later than it's written).
Parameterstown