Surfline Scraper
Pricing
from $3.00 / 1,000 results
Surfline Scraper
[π° $3.0 / 1K] Extract Surfline surf forecasts β wave height, swell direction & period, wind, tides, water temperature, and weather for any spot. Search by name, paste spot URLs, or filter by region. Up to a 16-day horizon.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pull complete surf forecasts from Surfline for any break on earth β wave height, primary and secondary swell trains, wind, tides, water temperature, weather, and sunrise/sunset β all merged into one timestamp-aligned forecast for each spot. Search by spot name, paste report URLs, or filter by region, then get a clean forecast up to 16 days out. Built for surf-travel planners, surf schools, and coastal researchers who need structured, ready-to-use forecast data without clicking through Surfline spot by spot.
Why This Scraper?
- Five forecast dimensions in one row β waves, wind, tides, weather, and sunlight are merged onto a single timestamp grid per spot, so every reading lines up instead of arriving as five separate feeds you have to stitch together.
- Up to a 16-day horizon β wave, wind, and tide data run out to 10 days; air temperature and daylight extend to a full 16, and you pick 1, 2, 3, 5, 7, 10, or 16 days per run.
- Hourly, 3-hourly, or 6-hourly resolution β dial reading density from one point every hour for dawn-patrol precision down to a light 6-hour summary.
- Primary and secondary swell trains β each wave reading carries every real swell partition with its
height,period(seconds), anddirection(degrees), so you can tell a clean groundswell from messy windswell. - Exact high and low tide extrema β every reading gets a tide height, and the precise high/low turning points are tagged with
tideTypein place, not just an interpolated grid. - Wind type classification plus gusts β every reading labels the wind as offshore, onshore, or cross-shore alongside speed, compass direction, and gust strength.
- Overall condition rating and water temperature per spot β Surfline's spot rating (e.g. POOR, FAIR, GOOD) and the day's water-temperature range come on every spot row.
- Global coverage, one search returns them all β search any named break worldwide (e.g. "Ocean Beach" surfaces every matching Surfline spot); narrow with a region breadcrumb filter like "California" or "Portugal".
- Metric or imperial, your call β switch wave height, wind speed, and temperature between meters/kph/Β°C and feet/mph/Β°F for the whole run.
Use Cases
Surf Travel Planning
- Compare the forecast across a shortlist of breaks before booking a trip
- Spot the best swell window in the next 10 days for a target coastline
- Rank nearby spots by wave height and wind direction on a given day
- Plan around daylight with per-day sunrise and sunset times
Surf Schools & Camps
- Schedule beginner sessions around the mildest wave and wind windows
- Build daily condition briefings for students and instructors
- Match lesson locations to forecast rating across a region
Coastal Research & Tide Analysis
- Extract exact high/low tide times and heights for study sites
- Correlate swell period and direction with local coastal behavior
- Track water temperature trends across spots and seasons
Surf Media & Content
- Auto-populate forecast widgets and daily reports for surf websites
- Feed swell, wind, and tide data into newsletters and social posts
- Build "best conditions this week" roundups across multiple regions
Watersports & Coastal Businesses
- Time rentals, tours, and staffing to favorable wind and tide windows
- Alert customers when conditions at a home break turn favorable
- Enrich booking apps with live wave, wind, and daylight data
Getting Started
Search by Spot Name
The simplest way to start β one break by name:
{"spotSearch": ["Pipeline"]}
Compare Several Spots at Higher Detail
{"spotSearch": ["Trestles", "Malibu", "Rincon"],"forecastDays": "5","intervalHours": "1","units": "imperial"}
Region-Filtered Search with Selected Conditions
{"spotSearch": ["Ocean Beach"],"region": "California","forecastDays": "7","conditions": ["wave", "wind", "tides"],"maxSpots": 10}
Exact Spots by URL
Paste Surfline surf-report URLs to target precise breaks you already know:
{"spotUrls": ["https://www.surfline.com/surf-report/blacks-beach/5842041f4e65fad6a770883b"],"forecastDays": "16","intervalHours": "3","units": "metric"}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
spotSearch | string[] | ["Pipeline"] | Search surf spots by name (e.g. "Pipeline", "San Diego", "Bondi Beach"). Each term returns the best-matching spots. Leave empty if you are pasting spot URLs instead. |
spotUrls | string[] | [] | Direct Surfline spot URLs (e.g. a /surf-report/<name>/<id> link). Use these to target exact spots you already know. |
region | string | "" | Keep only spots whose location breadcrumb contains this text (e.g. "California", "Portugal", "Gold Coast"). Only affects name-searched spots; spots targeted directly by URL are always kept. |
Forecast Options
| Parameter | Type | Default | Description |
|---|---|---|---|
forecastDays | select | 7 days | Forecast horizon, starting today: 1, 2, 3, 5, 7, 10, or 16 days. Waves, wind, and tides run to 10 days; temperature and sunrise/sunset extend to 16. |
intervalHours | select | Every 3 hours | Spacing between forecast readings: every hour, every 3 hours, or every 6 hours. Hourly gives the most detail. |
conditions | multi-select | all | Which conditions to include: Waves & swell, Wind, Tides, Weather, Sunrise & sunset. Leave empty to include all of them. |
units | select | Imperial (ft, mph, Β°F) | Measurement units for wave height, wind speed, and temperature: Metric (m, kph, Β°C) or Imperial (ft, mph, Β°F). |
Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
maxSpots | integer | 20 | Hard cap on how many spots to forecast in one run. Protects you from an over-broad search returning thousands of spots. Set to 0 for no limit (capped at 2,000 spots as a safety ceiling). |
Output
Each result is one surf spot with its full forecast embedded as a forecast[] time-series. Here is a representative row (trimmed to a few forecast readings):
{"spotId": "5842041f4e65fad6a770883b","spotName": "Blacks Beach","region": "United States / California / San Diego","latitude": 32.8894,"longitude": -117.2519,"timezone": "America/Los_Angeles","url": "https://www.surfline.com/surf-report/blacks-beach/5842041f4e65fad6a770883b","rating": "FAIR","ratingScore": 2,"waterTempMin": 64,"waterTempMax": 66,"waveHeightMin": 3,"waveHeightMax": 4,"units": "imperial","forecastDays": 3,"scrapedAt": "2026-07-02T14:30:00+00:00","forecast": [{"timestamp": "2026-07-02T06:00:00-07:00","waveMin": 3,"waveMax": 4,"waveHumanRelation": "Waist to shoulder high","swells": [{ "height": 2.6, "period": 14, "direction": 201 },{ "height": 1.1, "period": 8, "direction": 285 }],"windSpeed": 6,"windDirection": 240,"windType": "Offshore","windGust": 9,"temperature": 68,"weatherCondition": "CLEAR","tideHeight": 2.1,"tideType": "HIGH","sunrise": "2026-07-02T05:47:00-07:00","sunset": "2026-07-02T20:01:00-07:00"}]}
Spot Fields
| Field | Type | Description |
|---|---|---|
spotId | string | Surfline spot identifier |
spotName | string | Human-readable spot name |
region | string | Location breadcrumb (Country / State / Region) |
latitude | number | Spot latitude |
longitude | number | Spot longitude |
timezone | string | Spot timezone (e.g. "America/Los_Angeles") |
url | string | Surfline surf-report URL |
rating | string | Overall condition rating (e.g. POOR, FAIR, GOOD) |
ratingScore | number | Numeric sort value behind the rating |
waterTempMin | number | Day's minimum water temperature |
waterTempMax | number | Day's maximum water temperature |
waveHeightMin | number | Summary minimum wave height |
waveHeightMax | number | Summary maximum wave height |
units | string | Units used for this row (metric or imperial) |
forecastDays | number | Number of days actually covered by the forecast |
scrapedAt | string | ISO timestamp of data collection |
forecast | object[] | Per-reading forecast time-series (see below) |
Forecast Reading Fields
Each entry in forecast[] is one timestamp on the merged grid.
| Field | Type | Description |
|---|---|---|
timestamp | string | Reading time in the spot's local timezone |
waveMin | number | Minimum surf height at this reading |
waveMax | number | Maximum surf height at this reading |
waveHumanRelation | string | Plain-language size (e.g. "Waist to shoulder high") |
swells | object[] | Swell trains, each with height, period (seconds), direction (degrees) |
windSpeed | number | Wind speed at this reading |
windDirection | number | Wind direction in degrees |
windType | string | Wind quality: Offshore, Onshore, or Cross-shore |
windGust | number | Gust speed at this reading |
temperature | number | Air temperature at this reading |
weatherCondition | string | Weather condition code (e.g. CLEAR, RAIN) |
Tide & Sunlight Fields
Also carried on each forecast[] entry.
| Field | Type | Description |
|---|---|---|
tideHeight | number | Tide height at this reading |
tideType | string | HIGH or LOW when the reading falls on a tide turning point |
sunrise | string | Local sunrise time for this reading's day |
sunset | string | Local sunset time for this reading's day |
Tips for Best Results
- Start with one or two spots to confirm the units, horizon, and conditions match what you need, then widen the search or raise
maxSpots. - Use
intervalHours: 1with a 3-day horizon for the most granular dawn-patrol planning β hourly readings across three days give you precise swell and wind windows without a huge, slow response. - Select only the conditions you need β dropping to
["wave", "wind"]skips tide, weather, and sunlight lookups for faster runs when you only care about the surf. - Choosing 16 days returns the full 10-day surf forecast plus 16-day temperature and daylight β the reported
forecastDaysreflects the actual horizon of the merged data. - Filter broad names with
regionβ searching "Ocean Beach" alone returns matches worldwide, so add a breadcrumb like "California" or "New Zealand" to zero in. - Read swell direction in degrees β the
directionon each swell inswells[]is a compass bearing the swell comes from, letting you match it to a spot's ideal swell window. - Pair
spotUrlswith a saved list β the exact spot URL always targets the break you mean, even when several spots share a name.
Pricing
From $3.00 per 1,000 results β one result is a single surf spot with its complete embedded forecast, not a per-reading charge, so a heavy 16-day hourly spot still counts as one result. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.36 | $0.34 | $0.32 | $0.30 |
| 1,000 | $3.60 | $3.40 | $3.20 | $3.00 |
| 10,000 | $36.00 | $34.00 | $32.00 | $30.00 |
| 100,000 | $360.00 | $340.00 | $320.00 | $300.00 |
No compute or time-based charges β you pay per result, plus a small fixed per-run start fee. Each result is one surf spot with its full embedded forecast.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n β Workflow automation
- Google Sheets β Direct spreadsheet export
- Slack / Email β Notifications on new results
- Webhooks β Trigger custom APIs on run completion
- Apify API β Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate surf-forecast research, travel planning, and content use. You are responsible for complying with applicable laws and Surfline's Terms of Service. Use the data responsibly, respect reasonable request volumes, and do not use it for any unlawful purpose.