Hubs LNG Cargo
The Hubs LNG Cargo endpoints allow you to pull active and inactive LNG cargo posts from the Spark Hubs platform, including outright, outright strip, swap and tender posts across multiple regions.
Looking to pull Hubs data?
Visit our Python Code Examples section to download our Hubs code sample, the quickest way to start pulling Hubs data.
Hubs API Subscription Required
Contact us to discuss our Premium plans at commercial@sparkcommodities.com
For a full definition of all response data fields, see Response Fields below.
Active Posts
/v1.0/lng/hubs/cargo/active/
Call this endpoint to retrieve active Hubs posts, including outright, outright strip, swap and tender posts.
Parameters
incoterm(optional)- Filter posts by incoterm.
- Available values:
fob,des
region(optional)- Filter posts by region.
- See the Reference Data endpoint for available values.
Data can be retrieved in JSON or CSV format, although metadata is only available in the JSON response.
Inactive Posts
/v1.0/lng/hubs/cargo/inactive/
Call this endpoint to retrieve all inactive (expired) Hubs posts, including outright, outright strip, swap and tender posts. Active posts are not included in this response - use the Active Posts endpoint to retrieve those.
Parameters
incoterm(optional)- Filter posts by incoterm.
- Available values:
fob,des
region(optional)- Filter posts by region.
- See the Reference Data endpoint for available values.
Data can be retrieved in JSON or CSV format, although metadata is only available in the JSON response.
Reference Data
/v1.0/lng/hubs/cargo/reference-data/
Call this endpoint to retrieve reference data for the Hubs platform, including available regions, incoterms, and slot types.
Parameters
This endpoint has no parameters to specify.
Data can be retrieved in JSON or CSV format, although metadata is only available in the JSON response.
Response Fields
The Active and Inactive Posts endpoints return the same fields. CSV headers are the JSON field names with the first letter capitalised and acronyms in upper case (e.g. postedAtUtc becomes PostedAtUTC). Fields that don't apply to a post type are empty.
| JSON field | CSV column(s) | Description |
|---|---|---|
postId | PostID | Unique post ID, e.g. LNG-NWE-O-0001 |
incoterm | Incoterm | fob or des |
hubRegions | HubRegions | Region(s) of the post's terminals |
interestType | InterestType | outright, outright_strip (a series of outright cargoes over several windows), swap or tender |
orderType | OrderType | bid or offer for outright and outright strip posts, offered or requested for each leg of a swap, buy or sell for tenders |
status | Status | active or expired |
tenderPhase | TenderPhase | Tenders only: published, live or end |
posterOrgName | PosterOrgName | The poster's organisation, or Anonymous |
posterUserName | PosterUserName | The poster's user name. Only populated for posts made by your own organisation, otherwise empty |
connectionsCount | ConnectionCount | Number of counterparties that have responded to the post |
terminals | TerminalNames | The post's terminals or loading ports. In JSON, a UUID to name map. In the CSV, a comma-separated list of names |
terminalsAreHidden | TerminalsAreHidden | true if the poster has hidden the terminals |
windows[].startDate, windows[].endDate | WindowStartDate, WindowEndDate | First and last date of the loading or delivery window. Both are always provided. For a single date, the end date equals the start date |
windows[].outrightCargoCount | WindowOutrightCargoCount | Number of cargoes in the window (outright and outright strip posts) |
windows[].dateType | WindowDateType | How the window was entered: single (one date), range, window-1h (1st to 15th of the month), window-2h (16th to month end) or month |
windowsAreHidden | WindowsAreHidden | true if the poster has hidden the windows |
windowsAreFlexible | WindowsAreFlexible | true if the poster is flexible on the dates |
quantityValue | QuantityValue | Cargo size |
quantityUnit | QuantityUnit | mmbtu, tbtu or m3 |
quantityTolerancePercent | QuantityTolerancePercent | Accepted tolerance on the cargo size, in % |
quantityIsHidden, quantityIsFlexible | QuantityIsHidden, QuantityIsFlexible | Whether the quantity is hidden, and whether the poster is flexible on it |
swapPaymentIndicationPreference | SwapPaymentIndicationPreference | Swaps only: none, willing-to-pay or desire-to-be-paid |
swapPaymentIndicationPreferenceIsHidden | SwapPaymentIndicationPreferenceIsHidden | Swaps only: true if the payment preference is hidden |
indicativePriceStructure | IndicativePriceStructure | fixed or indexed |
indicativePriceFixedValue | IndicativePriceFixedValue | The price, when the structure is fixed |
indicativePriceIndex | IndicativePriceIndex | The index, when the structure is indexed (e.g. TTF, HH) |
indicativePriceIndexedMonth | IndicativePriceIndexedMonth | The index contract month relative to the cargo's window month (0 = same month, 1 = the following month) |
indicativePriceIndexPercentage | IndicativePriceIndexPercentage | Percentage of the index, e.g. 100.000 for 100% |
indicativePriceIndexConstant | IndicativePriceIndexConstant | Constant added to the index, e.g. -0.500. An indexed price is percentage × index + constant |
indicativePriceIsHidden | IndicativePriceIsHidden | true if the poster has hidden the price |
otherInfo, otherInfoIsHidden | OtherInfo, OtherInfoIsHidden | Free-text notes from the poster, and whether they are hidden |
postedAtUtc | PostedAtUTC | When the post was created (UTC) |
postValidUntilUtc | PostValidUntilUTC | Outright and swap posts: when the post expires. Tenders: when the tender closes to new counter-offers (UTC) |
postLastUpdatedAtUtc | PostLastUpdatedAtUTC | When the post was last updated (UTC) |
tenderLiveAtUtc | TenderLiveAtUTC | Tenders only: when the tender went live (UTC) |
A few things to note when working with the data:
- Swaps are returned as two records. Each swap post appears twice with the same
postId: once for the cargo offered (orderType=offered) and once for the cargo requested (requested). Each leg has its own incoterm, regions, terminals and windows. - One CSV row per window. A post with several windows (e.g. an outright strip) has one CSV row per window, with the post's other fields repeated. In JSON, the windows are a list within the post.
- Numbers are returned as strings in JSON (e.g.
"3.600000") to preserve their precision. Convert them before doing calculations. - Hidden fields are empty. When the poster hides a field, its value is empty (
nullin JSON) and the matching...IsHiddenfield istrue. - Metadata. The JSON
metaDataincludesasOf(the time of your request, UTC), any filters you applied, andterminals, the UUID to name lookup for all Hubs terminals and loading ports.