Products
Explorer — Standard Access
AVAILABLE NOW

Raw data. Clean data.
Pipeline data.

One license. Cohesive, consistent pipeline capacity data spanning multiple years — sorted by pipeline, updated every day. Stop visiting dozens of EBBs.


Try It Now

Live data, right in your browser

Pipeline Data
92+ pipelines, standardized schema, daily refresh
Explorer
TCPL Mainline
Apr 20, 2026
Load Data
DatePipelineLocationTypeDesign Cap.TSQ
2026-04-20TCPL MainlineEmpressReceipt4,8503,921
2026-04-20TCPL MainlineDawn HubDelivery2,1001,847
2026-04-20TCPL MainlineIroquoisDelivery1,3001,089
2026-04-20TCPL MainlineKirkwallReceipt950782
2026-04-20TCPL MainlineParkwayDelivery3,2002,611
2026-04-20TCPL MainlineQuebec CityDelivery480401
Try Live Preview →
WAFL API
REST endpoints — plug into Python, Excel, or any HTTP client
Explorer
# Python example import requests resp = requests.get( "https://wafl.ca/api/raw-data", params={ "pipeline_id": 12, "as_of_date": "2026-04-20", }, headers={"Authorization": "Bearer YOUR_KEY"}, ) data = resp.json()["rows"]
// Response (truncated) { "rows": [ { "location_name": "Empress", "tsq": 3921, "oac": 929 }, { "location_name": "Dawn Hub", "tsq": 1847, "oac": 253 }, ... ]}
See the API →
What's Included

Everything you need in one place

🗄️
One Query. 92+ Pipelines.
Stop visiting dozens of Electronic Bulletin Boards. Every major North American pipeline normalized to one schema.
📅
10+ Years of History
Data going back to January 2015. Backtest seasonal patterns and spot trends that 90-day EBB windows can't show you.
⬇️
Built for Your Workflow
Raw CSV downloads sorted by date or location. Plug directly into Python, ETRM, or spreadsheets — no reformatting.
🔄
4× Daily Refresh
Automated ingestion from pipeline operator portals 4 times a day. Data current as of Apr 20, 2026.
📍
Location-Level Granularity
11,030 locations across 92 pipelines — receipt, delivery, storage, and injection points.
🔌
Live API Access
Query our data directly from Excel Power Query, Python, or any HTTP client. Plug live pipeline data into your existing tools.
Also in Explorer
Ready to access the full dataset?

92+ pipelines, 10+ years of history, daily refresh. One subscription.

Preview Today's data across all pipelines — free preview. Subscribe for full history →
Preview shows today's data only. Subscribe for full history across all dates.
Select a pipeline and click Load Data.
DatePipelineLocationType DesignOperating TSQOAC
Select a pipeline and click Load Data.
WAFL API

Pipeline Data API

Query standardized pipeline capacity data directly from Python, Excel Power Query, or any HTTP client. All endpoints return JSON (or CSV). Authenticate with your API key.

Guest Sign up for a free API key — today's data at no cost.
Get your API key
Create a free account to receive an API key. Free accounts get today's data. Subscribe for full history.
Rate limits
60 requests / hour per API key. Exceeded requests return HTTP 429. Subscribed users receive full historical access; free accounts receive today's data only.
Endpoints
GET/api/pipelines
Returns all pipelines (pipeline_id, pipeline_name). No extra params required.
GET/api/locations
Returns all locations for a pipeline. Params: pipeline_id or pipeline (name).
GET/api/pipeline-dates
Available dates for a pipeline, newest first. Params: pipeline_id or pipeline. Free: today only.
GET/api/raw-data
JSON capacity records. Params: pipeline_id/pipeline, start, end, location_ids (optional CSV). Free: today only.
GET/api/raw-data.csv
Same as above but streams a CSV download. Add order=location to sort by location then date.
GET/api/capacity
Single-date snapshot. Params: pipeline_id/pipeline, as_of_date, location_ids (optional). Free: today only.
GET/api/location-analysis
Utilization % per location over a date range. Params: pipeline_id/pipeline, start, end, location_ids.
Pipeline names vs. IDs
All endpoints accept ?pipeline_id=15 (numeric) or ?pipeline=Algonquin (name, case-insensitive). Use /api/pipelines to discover all available pipeline names and IDs.
Code examples
PYTHON · requests
import requests, pandas as pd

API_KEY = "wafl_your_key_here"
BASE    = "https://wafl.ca/api"

# Fetch raw data by pipeline name
resp = requests.get(
    f"{BASE}/raw-data",
    params={
        "pipeline": "Algonquin",
        "start":    "2026-01-01",
        "end":      "2026-04-17",
        "api_key":  API_KEY,
    }
)
resp.raise_for_status()
df = pd.DataFrame(resp.json()["rows"])
print(df.head())
EXCEL · Power Query (M)
let
    ApiKey   = "wafl_your_key_here",
    Pipeline = "Algonquin",
    StartDate = "2026-01-01",
    EndDate   = "2026-04-17",

    Url = "https://wafl.ca/api/raw-data?pipeline=" & Pipeline
        & "&start=" & StartDate & "&end=" & EndDate
        & "&api_key=" & ApiKey,

    Source = Json.Document(Web.Contents(Url)),
    Rows   = Source[rows],
    Table  = Table.FromList(Rows, Splitter.SplitByNothing()),
    Expand = Table.ExpandRecordColumn(Table, "Column1",
        {"as_of_date","pipeline_name","location_name","type",
         "design_capacity","operating_capacity","tsq","oac"})
in
    Expand
cURL
# Download CSV (sorted by location)
curl -o data.csv \
  "https://wafl.ca/api/raw-data.csv?pipeline=Algonquin&start=2026-01-01&end=2026-04-17&order=location&api_key=wafl_your_key_here"