NGI Data Services API

Getting Started

This API is available to all NGI data clients at no additional charge. We will continue to improve this service over time to keep making integrating NGI data as easy as possible.

To begin using the API, you’ll need the following:

A) An email address with an associated active NGI data subscription
B) An API key. If you don’t yet have your API key, please reach out to ngidata@naturalgasintel.com.

To retrieve data from the API, you’ll need to make two separate requests:

  1. Authentication Request: You pass your subscriber email address and your API key to the /auth route to retrieve an bearer/auth token. You need pass this token back to the API in order to make subsequent calls. Tokens have an expiration of 24 hours from time of issuance.
  2. Data Retrieval Request: You pass the your authentication token and any other necessary parameters to your desired route to retrieve a data set.

Below is an example of these two calls being used in sequence to retrieve a list of Daily GPI locations:

Example Two Step Data Retrieval In Python:

  import requests
  import json
  data = {
    "email":"example@example.com", # subscriber email
    "password":"YourAPIPassword" # insert your api key here
  }

  auth_url = 'https://api.ngidata.com/auth' # auth route
  response = requests.post(auth_url, json=data)
  key_json = json.loads(response.text)
  authToken = key_json["access_token"]
  print("Token: ", authToken)

  head = {'Authorization': 'Bearer ' + authToken}
  daily_locations_url = "https://api.ngidata.com/dailyLocations"
  responseData = requests.get(daily_locations_url, headers=head)
  daily_locations = responseData.text
  print(daily_locations)

  

Note: All other examples in the sections below assume you have already retrieved an authentication token via the /auth route.

Index

Below you will find the list of API calls available for retrieving data related to the Daily GPI, Weekly GPI, Bidweek Survey, Forward Look, Mexico GPI, and Shale Daily. All data can be accessed via HTTP GET requests to the URIs provided in the below documentation.

Authentication
Authentication

Corrections
How Corrections Work
Bidweek Datafeed Corrections (Legacy TXT Format)
Daily Datafeed Corrections (Legacy TXT Format)
Shale Datafeed Corrections (Legacy TXT Format)
Weekly Datafeed Corrections (Legacy TXT Format)

Bidweek Routes
List Bidweek Survey Locations
Bidweek Datafeed (JSON Format)
Bidweek Datafeed (Legacy TXT Format)
Bidweek Historical Data (JSON Format)
Bidweek Datafeed Corrections (Legacy TXT Format Only)

Daily GPI Routes
List Daily GPI Locations
Daily Datafeed (JSON Format)
Daily Datafeed (Legacy TXT Format)
Daily Historical Data (JSON Format)
Daily Datafeed Corrections (Legacy TXT Format Only)

Forward Look Routes
List Forward Look Locations
Forward Look Datafeed (JSON Format)
Forward Look Datafeed (Legacy XLS Format)
Forward Time Series Historical Data By Contract (JSON Format)

LNG Insight Routes
LNG Flow Datafeed (JSON Format)
LNG Flow Datafeed (Legacy CSV Format)

Mexico GPI Routes
List Mexico Cost Plus Locations
Mexico Cost Plus Datafeed (JSON Format)
Mexico Cost Plus Datafeed (Legacy CSV Format)
Mexico Cost Plus Historical Data (JSON Format)
Sistrangas Flows Datafeed (Legacy CSV Format Only)

MidDay Alert Routes
List MidDay Alert Locations
MidDay Datafeed (JSON Format)
MidDay Datafeed (Legacy TXT Format)
MidDay Historical Data (JSON Format)

Shale Daily Routes
List Shale Daily Locations
Shale Datafeed (JSON Format)
Shale Datafeed (Legacy TXT Format)
Shale Historical Data (JSON Format)

Weekly GPI Routes
List Weekly GPI Locations
Weekly Datafeed (JSON Format)
Weekly Datafeed (Legacy TXT Format)
Weekly Historical Data (JSON Format)
Weekly Datafeed Corrections (Legacy TXT Format Only)


Authentication

Return to Index

Takes email and API password and returns a bearer token (auth_token) that will be needed to make subsequent calls protected URLs.

URL
/auth

Method:
POST

URL Params:
Required: none
Optional: none

Data Params

  {
     "email": "example@example.com",
     "password":"YourAPIPassword"
   }

Success Response:
Code: 200
Content:

    {
        "access_token": "**************************"
    }

Sample Call in Python:

  import requests
  data = {
    "email":"example@example.com",
    "password":"YourAPIPassword"
  }

  url = 'https://api.ngidata.com/auth'
  response = requests.post(url, json=data)

List of Daily GPI Locations


Return to Index

Returns json list of locations and their corresponding pointcodes.

URL
/dailyLocations

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
   "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

    {
        "Daily GPI Locations": {
            "ANR ML7": "MCWML7",
            "ANR SE": "SLAANRSE",
            "ANR SW": "MCWANR",
            "Agua Dulce": "STXAGUAD",
            "Algonquin Citygate": "NEAALGCG",
            "Algonquin Citygate (non-G)": "NEALGNG",
            "Algonquin Receipts": "NEAALGIN",
            "Alliance": "MCWALL",
        ...}
    }

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/dailyLocations'
  r = requests.get(url, headers=head)

List of MidDay Alert Locations

Return to Index

Returns json list of locations and their corresponding pointcodes.

URL
/middayLocations

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "MidDay Alert Locations": {
        "ANR ML7": "MCWML7",
        "ANR SE": "SLAANRSE",
        "ANR SW": "MCWANR",
        "Agua Dulce": "STXAGUAD",
        "Algonquin Citygate": "NEAALGCG",
        "Algonquin Citygate (non-G)": "NEALGNG",
        "Algonquin Receipts": "NEAALGIN",
        "Alliance": "MCWALL",
        ...}
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/middayLocations'
  r = requests.get(url, headers=head)

List of Weekly GPI Locations

Return to Index

Returns json list of locations and their corresponding pointcodes.

URL
/weeklyLocations

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "Weekly GPI Locations": {
        "ANR ML7": "MCWML7",
        "ANR SE": "SLAANRSE",
        "ANR SW": "MCWANR",
        "Agua Dulce": "STXAGUAD",
        "Algonquin Citygate": "NEAALGCG",
        "Algonquin Citygate (non-G)": "NEALGNG",
        "Algonquin Receipts": "NEAALGIN",
        "Alliance": "MCWALL",
        ...}
    }

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/weeklyLocations'
  r = requests.get(url, headers=head)

List of Bidweek Locations

Return to Index

Returns json list of locations and their corresponding pointcodes.

URL
/bidweekLocations

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "Bidweek Locations": {
        "ANR ML7": "MCWML7",
        "ANR SE": "SLAANRSE",
        "ANR SW": "MCWANR",
        "Agua Dulce": "STXAGUAD",
        "Algonquin Citygate": "NEAALGCG",
        "Algonquin Citygate (non-G)": "NEALGNG",
        "Algonquin Receipts": "NEAALGIN",
        "Alliance": "MCWALL",
        ...}
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/bidweekLocations'
  r = requests.get(url, headers=head)

List of Shale Locations

Return to Index

Returns json list of locations and their corresponding pointcodes.

URL
/shaleLocations

Method:
GET

URL Params:
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "Shale Locations": {
        "Arkoma - Woodford": "SMCWARK",
        "Bakken": "SRMTBAKKEN",
        "Barnett": "SNTXBARNETT",
        "Cana - Woodford": "SMCWCANA",
        "Eagle Ford": "SSTXEAGLE",
        "Fayetteville": "SMCWFAY",
        "Granite Wash": "SMCWGWA",
        ...}
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/shaleLocations'
  r = requests.get(url, headers=head)

List of Mexico Cost Plus Locations

Return to Index

Returns json list of locations and their corresponding pointcodes.

URL
/mxcpLocations

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
      "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "Mexico Cost Plus Locations": {
        "Alamo TX": "MXCPALAMO",
        "Bajio": "MXCPBAJIO",
        "Cactus": "MXCPCACTUS",
        "Clint TX": "MXCPCLINT",
        "El Encino": "MXCPENCINO",
        ...}
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/mxcpLocations'
  r = requests.get(url, headers=head)

List of Forward Look Locations

Return to Index

Returns json list of locations and their corresponding pointcodes.

URL
/forwardLocations

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "Forward Locations": {
        "ANR SE": "SLAANRSE",
        "ANR SW": "MCWANR",
        "Algonquin Citygates": "NEAALGCG",
        "CIG": "RMTCIG",
        "Chicago Citygate": "MCWCCITY",
        "Columbia Gas": "NEATCO",
        "Columbia Gulf Mainline": "SLACGMAIN",
        "Columbia Gulf Onshore": "SLACGO",
        ...}
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/forwardLocations'
  r = requests.get(url, headers=head)

Daily Datafeed JSON

Return to Index

Returns json encoded version of the Daily GPI datafeed file. Accepts an optional parameter, issue_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the issue_date parameter off of the call will result in the latest datafeed being returned.

URL
/dailyDatafeed.json?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "meta": {
        "issue_date": "2019-10-28",
        "trade_date": "2019-10-25"
    },
    "data": {
        "ALASPSF": {
            "Average": "None",
            "Deals": "None",
            "Delivery End Date": "2019-10-28",
            "Delivery Start Date": "2019-10-26",
            "High": "None",
            "Issue Date": "2019-10-28",
            "Low": "None",
            "Point Code": "ALASPSF",
            "Pricing Point": "Southern Pines",
            "Region": "Southeast",
            "Trade Date": "2019-10-25",
            "Volume": "None"
        },
        "ALAST85": {
            "Average": "2.125",
            "Deals": "195",
            "Delivery End Date": "2019-10-28",
            "Delivery Start Date": "2019-10-26",
            ...`
        }
    }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/dailyDatafeed.json?issue_date=2019-10-21'
  r = requests.get(url, headers=head)

Daily Datafeed Tab-Delimited Text

Return to Index

Returns legacy tab-delimited text version of the Daily GPI datafeed file. Accepts an optional parameter, issue_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the issue_date parameter off of the call will result in the latest datafeed being returned.

URL
/dailyDatafeed.txt?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

Point Code  Issue Date  Trade Date  Region  Pricing Point Low High  Average Volume  Deals Delivery Start Date Delivery End Date
STXAGUAD  2019-10-28  2019-10-25  South Texas Agua Dulce  2.150 2.150 2.150 10  2 2019-10-26  2019-10-28
STXFGTZ1  2019-10-28  2019-10-25  South Texas Florida Gas Zone 1            2019-10-26  2019-10-28
STXNGPL 2019-10-28  2019-10-25  South Texas NGPL S. TX            2019-10-26  2019-10-28
STXTENN 2019-10-28  2019-10-25  South Texas Tennessee Zone 0 South  2.040 2.075 2.065 209 42  2019-10-26  2019-10-28
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/dailyDatafeed.txt?issue_date=2019-10-21'
  r = requests.get(url, headers=head)

MidDay Datafeed JSON

Return to Index

Returns json encoded version of the MidDay Alert datafeed file. Accepts an optional parameter, trade_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the trade_date parameter off of the call will result in the latest datafeed being returned.

Note: MidDay uses trade date instead of issue date because MidDay Alert is published on the same day gas is traded and it has no corresponding PDF issue. The datafeeds retain the vestigial “issue date” field but these only exist to make processing easier for those who were accustomed to our Daily datafeed formatting template.

URL
/middayDatafeed.json?issue_date=trade_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: trade_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "meta": {
        "issue_date": "2019-10-28",
        "trade_date": "2019-10-25"
    },
    "data": {
        "ALASPSF": {
            "Average": "None",
            "Deals": "None",
            "Delivery End Date": "2019-10-28",
            "Delivery Start Date": "2019-10-26",
            "High": "None",
            "Issue Date": "2019-10-28",
            "Low": "None",
            "Point Code": "ALASPSF",
            "Pricing Point": "Southern Pines",
            "Region": "Southeast",
            "Trade Date": "2019-10-25",
            "Volume": "None"
        },
        "ALAST85": {
            "Average": "2.125",
            "Deals": "195",
            "Delivery End Date": "2019-10-28",
            "Delivery Start Date": "2019-10-26",
            ...
        }
    }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/middayDatafeed.json?trade_date=2019-10-21'
  r = requests.get(url, headers=head)

MidDay Alert Datafeed Tab-Delimited Text

Return to Index

Returns legacy tab-delimited text version of the MidDay Alert datafeed file. Accepts an optional parameter, trade_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the trade_date parameter off of the call will result in the latest datafeed being returned.

Note: MidDay uses trade date instead of issue date because MidDay Alert is published on the same day gas is traded and it has no corresponding PDF issue. The datafeeds retain the vestigial “issue date” field but these only exist to make processing easier for those who were accustomed to our Daily datafeed formatting template.

URL
/middayDatafeed.txt?trade_date=trade_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: trade_date (yyyy-mm-dd)

Data Params
{'Authorization': 'Bearer ' + auth_token}

Success Response:
Code: 200
Content:

Point Code  Issue Date  Trade Date  Region  Pricing Point Low High  Average Volume  Deals Delivery Start Date Delivery End Date
STXAGUAD  2019-10-28  2019-10-25  South Texas Agua Dulce  2.150 2.150 2.150 10  2 2019-10-26  2019-10-28
STXFGTZ1  2019-10-28  2019-10-25  South Texas Florida Gas Zone 1            2019-10-26  2019-10-28
STXNGPL 2019-10-28  2019-10-25  South Texas NGPL S. TX            2019-10-26  2019-10-28
STXTENN 2019-10-28  2019-10-25  South Texas Tennessee Zone 0 South  2.040 2.075 2.065 209 42  2019-10-26  2019-10-28
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/middayDatafeed.txt?trade_date=2019-10-21'
  r = requests.get(url, headers=head)

Weekly Datafeed JSON

Return to Index

Returns json encoded version of the Weekly GPI datafeed file.

Note: Weekly GPI issue dates will always be the Monday of the given week. If this method is called for an issue date that is not a Monday, it will return an empty list.

URL
/weeklyDatafeed.json?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "meta": {
        "issue_date": "2019-10-28",
        "start_date": "2019-10-21",
        "end_date": "2019-10-25"
    },
    "data": {
        "ALASPSF": {
            "Average": "None",
            "Deals": "None",
            "High": "None",
            "Issue Date": "2019-10-28",
            "Low": "None",
            "Point Code": "ALASPSF",
            "Pricing Point": "Southern Pines",
            "Region": "Southeast",
            "Survey End": "2019-10-25",
            "Survey Start": "2019-10-21",
            "Volume": "None"
        },
        "ALAST85": {
            "Average": "2.140",
            "Deals": "722",
            "High": "2.225",
            "Issue Date": "2019-10-28",
            "Low": "1.985",
            "Point Code": "ALAST85",
            "Pricing Point": "Transco Zone 4",
            ....
        }
    }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/weeklyDatafeed.json?issue_date=2019-10-21'
  r = requests.get(url, headers=head)

Weekly Datafeed Tab-Delimited Text

Return to Index

Returns legacy tab-delimited text version of the Weekly GPI datafeed file. Accepts an optional parameter, issue_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the issue_date parameter off of the call will result in the latest datafeed being returned.

URL
/weeklyDatafeed.txt?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

Point Code  Issue Date  Survey Start Date Survey End Date Bidweek Region  Pricing Point Low High  Average Volume  Deals
STXAGUAD  2019-11-04  2019-10-31  2019-11-01  N South Texas Agua Dulce  2.350 2.400 2.375 41  7
STXFGTZ1  2019-11-04  2019-10-31  2019-11-01  N South Texas Florida Gas Zone 1  2.440 2.440 2.440 3 1
STXNGPL 2019-11-04  2019-10-31  2019-11-01  N South Texas NGPL S. TX          
STXTENN 2019-11-04  2019-10-31  2019-11-01  N South Texas Tennessee Zone 0 South  2.280 2.510 2.370 298 60
STXTETCO  2019-11-04  2019-10-31  2019-11-01  N South Texas Texas Eastern S. TX 2.380 2.550 2.435 257 36
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/weeklyDatafeed.txt?issue_date=2019-10-21'
  r = requests.get(url, headers=head)

Bidweek Datafeed JSON

Return to Index

Returns json encoded version of the Bidweek Survey datafeed file. The issue_date parameter is optional, if you leave it blank, the API will return the latest Bidweek data available.

Note: Bidweek Survey issue dates will always be the first day of the month, even though the prices will not be available until the first business day of the month. For example, the September 2019 Bidweek prices were published on September 2, 2019 whereas the issue date for September 2019 Bidweek is 2019-09-01. If this method is called for an issue date that is not the first day of the month, it will return an empty list.

URL
/bidweekDatafeed.json?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "meta": {
        "end_date": "2019-09-30",
        "issue_date": "2019-10-01",
        "start_date": "2019-09-24"
    },
    "data": {
        "ALAST85": {
            "Average": "2.400",
            "Deals": "72",
            "High": "2.430",
            "Issue Date": "2019-10-01",
            "Low": "2.390",
            "Point Code": "ALAST85",
            "Pricing Point": "Transco Zone 4",
            "Region": "Southeast",
            "Survey End": "2019-09-30",
            "Survey Start": "2019-09-24",
            "Volume": "636"
        },
        "ALATETM1": {
            "Average": "2.230",
            "Deals": "2",
            "High": "2.230",
            "Issue Date": "2019-10-01",
            "Low": "2.225",
            "Point Code": "ALATETM1",
            "Pricing Point": "Texas Eastern M-1, 30",
            ...
        }
    }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/bidweekDatafeed.json?issue_date=2019-10-01'
  r = requests.get(url, headers=head)

Bidweek Datafeed Tab-Delimited Text

Return to Index

Returns legacy tab-delimited text version of the Bidweek Survey datafeed file. Accepts an optional parameter, issue_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the issue_date parameter off of the call will result in the latest datafeed being returned.

URL
/bidweekDatafeed.txt?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

Point Code  Issue Date  Survey Start Date Survey End Date Bidweek Region  Pricing Point Low High  Average Volume  Deals
STXAGUAD  2019-11-01  2019-10-25  2019-10-31  Y South Texas Agua Dulce          
STXFGTZ1  2019-11-01  2019-10-25  2019-10-31  Y South Texas Florida Gas Zone 1  2.545 2.550 2.545 4 1
STXNGPL 2019-11-01  2019-10-25  2019-10-31  Y South Texas NGPL S. TX          
STXTENN 2019-11-01  2019-10-25  2019-10-31  Y South Texas Tennessee Zone 0 South          
STXTETCO  2019-11-01  2019-10-25  2019-10-31  Y South Texas Texas Eastern S. TX 2.485 2.500 2.495 32  7
STXST30 2019-11-01  2019-10-25  2019-10-31  Y South Texas Transco Zone 1  2.505 2.515 2.510 75  12
STXRAVG 2019-11-01  2019-10-25  2019-10-31  Y South Texas S. TX Regional Avg. 2.485 2.550 2.515 110 20
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/bidweekDatafeed.txt?issue_date=2019-10-01'
  r = requests.get(url, headers=head)

Shale Datafeed JSON

Return to Index

Returns json encoded version of the Shale Daily datafeed file. The issue_date parameter is optional. If you leave it blank, the API will return the latest Shale data available.

URL
/shaleDatafeed.json?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "meta": {
        "issue_date": "2019-10-28",
        "trade_date": "2019-10-25"
    },
    "data": {
        "SETXHAYNE": {
            "Average": "2.020",
            "Deals": "228",
            "High": "2.060",
            "Issue Date": "2019-10-28",
            "Low": "1.935",
            "Point Code": "SETXHAYNE",
            "Pricing Point": "Haynesville - E. TX",
            "Region": "Gulf Coast",
            "Survey End": "2019-10-28",
            "Survey Start": "2019-10-26",
            "Trade Date": "2019-10-25",
            "Volume": "1437"
        },
        "SMCWARK": {
            "Average": "1.940",
            "Deals": "32",
            "High": "1.950",
            "Issue Date": "2019-10-28",
            "Low": "1.890",
            "Point Code": "SMCWARK",
            "Pricing Point": "Arkoma - Woodford",
            ...
        }
    }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/shaleDatafeed.json?issue_date=2019-10-21'
  r = requests.get(url, headers=head)

Shale Datafeed Tab-Delimited Text

Return to Index

Returns legacy tab-delimited text version of the Shale datafeed file. Accepts an optional parameter, issue_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the issue_date parameter off of the call will result in the latest datafeed being returned.

URL
/shaleDatafeed.txt?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

Point Code  Region  Pricing Point Low High  Average Volume  Deals Trade Date  Delivery Start Date Delivery End Date Issue Date
SNTXBARNETT Gulf Coast  Barnett 2.160 2.240 2.200 567 79  2019-11-01  2019-11-02  2019-11-04  2019-11-04
SSTXEAGLE Gulf Coast  Eagle Ford  2.310 2.430 2.370 208 33  2019-11-01  2019-11-02  2019-11-04  2019-11-04
SETXHAYNE Gulf Coast  Haynesville - E. TX 2.160 2.310 2.245 1774  281 2019-11-01  2019-11-02  2019-11-04  2019-11-04
SNLAHAYNE Gulf Coast  Haynesville - N. LA 2.280 2.320 2.300 98  30  2019-11-01  2019-11-02  2019-11-04  2019-11-04
SWTXPERM  Gulf Coast  Permian 0.600 1.180 0.940 1464  237 2019-11-01  2019-11-02  2019-11-04  2019-11-04
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/shaleDatafeed.txt?issue_date=2019-10-01'
  r = requests.get(url, headers=head)

Mexico CostPlus Datafeed JSON

Return to Index

Returns json encoded version of the Mexico Cost Plus Transport prices datafeed file. The issue_date parameter is optional. If you leave it blank, the API will return the latest Mexico Cost Plus data available.

URL
/mxcpDatafeed.json?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "meta": {
        "issue_date": "2019-10-28"
    },
    "data": {
        "MXCPALAMO": {
            "Issue Date": "2019-10-28",
            "MXP-$US Exchange Rate": "19.08",
            "Point Code": "MXCPALAMO",
            "Price ($US/MMBtu)": "2.143",
            "Price (MXP/Gj)": "38.759",
            "Pricing Point": "Alamo TX"
        },
        "MXCPBAJIO": {
            "Issue Date": "2019-10-28",
            "MXP-$US Exchange Rate": "19.08",
            "Point Code": "MXCPBAJIO",
            "Price ($US/MMBtu)": "3.05",
            "Price (MXP/Gj)": "55.166",
            "Pricing Point": "Bajio"
        },
        "MXCPCACTUS": {
            "Issue Date": "2019-10-28",
            "MXP-$US Exchange Rate": "19.08",`
            ...
        }
    }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/mxcpDatafeed.json?issue_date=2019-10-21'
  r = requests.get(url, headers=head)

Mexico Cost Plus Datafeed CSV

Return to Index

Returns legacy the legacy CSV version of the Mexico Cost Plus datafeed file. Accepts an optional parameter, issue_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the issue_date parameter off of the call will result in the latest datafeed being returned.

URL
/mxcpDatafeed.csv?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

issue_date,location,exchange_rate,price,price_mx
2019-11-04,Clint TX,19.110,1.023,18.530
2019-11-04,Presidio TX,19.110,1.151,20.846
2019-11-04,Sasabe AZ,19.110,1.030,18.654
2019-11-04,Ogilby CA,19.110,2.402,43.513
2019-11-04,Alamo TX,19.110,2.394,43.369
2019-11-04,Rio Grande TX,19.110,2.731,49.469
2019-11-04,Roma TX,19.110,2.519,45.626
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/mxcpDatafeed.csv?issue_date=2019-10-01'
  r = requests.get(url, headers=head)

Mexico Sistrangas Summary Datafeed CSV

Return to Index

Returns legacy the legacy CSV version of the Mexico Sistrangas Summary Flows datafeed file. Accepts an optional parameter, issue_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the issue_date parameter off of the call will result in the latest datafeed being returned.

URL
/sngSummaryFlowsDatafeed.csv?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params
{'Authorization': 'Bearer ' + auth_token}

Success Response:
Code: 200
Content:

Deliveries By Sector,,
issue_date,type,scheduled_qty
2019-11-01,Distribution Deliveries,504902.0
2019-11-01,Electric Deliveries,1498200.0
2019-11-01,Industrial Deliveries,947687.0
2019-11-01,Petroleum Deliveries,276721.0
2019-11-01,Other Deliveries,1590907.0
2019-11-01,Total Deliveries,4818417.0
Electric Deliveries Breakout,,
issue_date,type,scheduled_qty
2019-11-01,CFE Points,694016.0
2019-11-01,Other Electric Points,804184.0
2019-11-01,Total Electric Deliveries,1498200.0
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/sngSummaryFlowsDatafeed.csv?issue_date=2019-10-01'
  r = requests.get(url, headers=head)

Forward Datafeed JSON

Return to Index

Returns a JSON representation of the Forward Look datafeed. The issue_date parameter is optional. If you leave it blank, the API will return the latest Forward Look data available.

URL
/forwardDatafeed.json?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
      "meta": {
        "issue_date": "2019-10-28",
        "trade_date": "2019-10-25"
      },
      "data": {
        "ALAST85": {
            "Location": "Transco Zone 4",
            "Pointcode": "ALAST85",
            "Basis Prices": [
                "-0.050",
                "-0.035",
                "-0.043",
                "-0.044",
                "-0.044",
                "-0.046",
                "-0.045",
                "-0.042",
                "-0.041",
                "-0.040",
                ...]
            },
            "Contracts": [
                "2019-11-01",
                "2019-12-01",
                "2020-01-01",
                "2020-02-01",
                "2020-03-01",
                "2020-04-01",
                "2020-05-01",
                "2020-06-01",
                "2020-07-01",
                "2020-08-01",
                ...]
            },
            "Fixed Prices": [
                "2.250",
                "2.424",
                "2.518",
                "2.481",
                "2.369",
                "2.188",
                "2.175",
                "2.218",
                "2.266",
                "2.279",
                ...]
            },
        "CALM400": {
            "Basis Prices": [
                "0.050",
                "0.081",
                "0.078",
                "0.001",
                "-0.275",
                "-0.603",
                "-0.586",
                "-0.613",
                "-0.381",
                "-0.380",
                ...
       }
    }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/forwardDatafeed.json?issue_date=2019-10-21'
  r = requests.get(url, headers=head)

Forward Datafeed XLS

Return to Index

Returns legacy the legacy XLS version of the Forward datafeed file. Accepts an optional parameter, issue_date, which can be used to specify which issue of the datafeed to retrieve. Leaving the issue_date parameter off of the call will result in the latest datafeed being returned.

URL
/forwardDatafeed.xls?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content: This will be the raw contents of the XLS file and will not be readable in text format. However, when opened using an Excel-compatable reader, it will be the two-tab Forward datafeed file that NGI has offered for years. ...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/forwardDatafeed.xls?issue_date=2019-10-01'
  r = requests.get(url, headers=head)

LNG Flow Datafeed JSON

Return to Index

Returns json encoded version of the LNG Flows datafeed file. The issue_date parameter is optional. If you leave it blank, the API will return the latest LNG Flows data available.

URL
/lngFlowDatafeed.json?issue_date=issue_date (yyyy-mm-dd)

Method:
GET

URL Params
Required: none
Optional: issue_date (yyyy-mm-dd)

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
    "data": {
        "cameron_cgt": {
            "Flow Date": "2019-12-18",
            "Location": "cameron_cgt",
            "Operating Capacity (Dth)": "800000.0",
            "Pipeline": "columbia_gulf",
            "Scheduled Quantity (Dth)": "461042.0"
        },
        "cameron_cip": {
            "Flow Date": "2019-12-18",
            "Location": "cameron_cip",
            "Operating Capacity (Dth)": "1500000.0",
            "Pipeline": "cameron_interstate",
            "Scheduled Quantity (Dth)": "523958.0"
        },
        ...
    }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/lngFlowDatafeed.json?issue_date=2019-10-21'
  r = requests.get(url, headers=head)

LNG Flow Datafeed CSV

Return to Index

Returns the legacy CSV version of the LNG Flows datafeed file. Only the latest file is returned via this route. The latest file includes flow data for the past 10 days.

URL
/lngFlowDatafeed.csv

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

flow_date, pointcode, location, scheduled_quantity, op_cap
2019-12-18,CAMERONCGT,cameron_cgt,461042,800000
2019-12-18,CAMERONCIP,cameron_cip,523958,1500000
2019-12-18,CORPUSCHRISTIPL,corpus_christi,1620140,2295000
2019-12-18,COVEPTDOM,cove_point,752652,815000
2019-12-18,ELBAELBAXPRESS,elba_island_elba_express,75000,521967
2019-12-18,FREEPORTCOSTBEND,freeport,810160,1814890
2019-12-18,SABPASSCREOLE,sabine_pass_creole,1489550,1700000
2019-12-18,SABPASSKMLA,sabine_pass_km_la,789252,1700000
2019-12-18,SABPASSNGPL,sabine_pass_ngpl,711643,835000
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/lngFlowDatafeed.csv'
  r = requests.get(url, headers=head)

Bidweek Historical Data

Return to Index

Returns historical time series data in JSON format for the selected pointcode and date range. Length of historical data vary by point. Please see NGI’s Price Index Methodology to find the dates we began publishing each point.

URL
/bidweekHistoricalData.json?start_date=start_date (yyyy-mm-dd)&end_date=end_date (yyyy-mm-dd)&location=pointcode

Example query for Chicago Citygate (pointcode: MCWCCITY) for the period of 2019-01-01 through 2019-12-31:
https://api.ngidata.com/bidweekHistoricalData.json?start_date=2019-01-01&end_date=2019-12-31&location=MCWCCITY

Method:
GET

URL Params
Required:
none
Optional:
start_date (yyyy-mm-dd) Defaults to today’s date - 365 days
end_date (yyyy-mm-dd) Defaults to today
location (pointcode) Defaults to Henry Hub

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
  "averages": {
  "0": "3.990",
  "1": "3.195",
  "2": "2.780",
  "3": "2.665",
  "4": "2.310"
  },
  "deals": {
  "0": "33",
  "1": "51",
  "2": "32",
  "3": "20",
  "4": "26"
  },

  "highs": {
  "0": "4.160",
  "1": "3.370",
  "2": "3.000",
  "3": "2.710",
  "4": "2.320"
  },
  "issue_dates": {
  "0": "2019-01-01",
  "1": "2019-02-01",
  "2": "2019-03-01",
  "3": "2019-04-01",
  "4": "2019-05-01"
  },
  "location_names": {
  "0": "Chicago Citygate",
  "1": "Chicago Citygate",
  "2": "Chicago Citygate",
  "3": "Chicago Citygate",
  "4": "Chicago Citygate"
  },
  "lows": {
  "0": "3.780",
  "1": "3.010",
  "2": "2.660",
  "3": "2.630",
  "4": "2.290"
  },
  "pointcodes": {
  "0": "MCWCCITY",
  "1": "MCWCCITY",
  "2": "MCWCCITY",
  "3": "MCWCCITY",
  "4": "MCWCCITY"
  },
  "region_names": {
  "0": "Midwest",
  "1": "Midwest",
  "2": "Midwest",
  "3": "Midwest",
  "4": "Midwest"
  },
  "survey_ends": {
  "0": "2018-12-28",
  "1": "2019-01-31",
  "2": "2019-02-28",
  "3": "2019-03-29",
  "4": "2019-04-30"
  },
  "survey_starts": {
  "0": "2018-12-20",
  "1": "2019-01-25",
  "2": "2019-02-22",
  "3": "2019-03-25",
  "4": "2019-04-24"
  },
  "volumes": {
  "0": "211",
  "1": "251",
  "2": "166",
  "3": "166",
  "4": "140"
  }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = '/bidweekHistoricalData.json?location=MCWCCITY&start_date=2019-01-01&end_date=2019-05-31'
  r = requests.get(url, headers=head)

Daily Historical Data

Return to Index

Returns historical time series data in JSON format for the selected pointcode and date range. Length of historical data vary by point. Please see NGI’s Price Index Methodology to find the dates we began publishing each point.

URL
/dailyHistoricalData.json?start_date=start_date (yyyy-mm-dd)&end_date=end_date (yyyy-mm-dd)&location=pointcode

Example query for Chicago Citygate (pointcode: MCWCCITY) for the period of 2019-01-01 through 2019-12-31:
https://api.ngidata.com/dailyHistoricalData.json?start_date=2019-01-01&end_date=2019-12-31&location=MCWCCITY

Method:
GET

URL Params
Required:
none
Optional:
start_date (yyyy-mm-dd) Defaults to today’s date - 365 days
end_date (yyyy-mm-dd) Defaults to today
location (pointcode) Defaults to Henry Hub

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
  "averages": {
  "0": "2.640",
  "1": "2.510",
  "2": "2.615",
  "3": "2.550",
  "4": "2.735",
  "5": "2.700"
  },
  "deals": {
  "0": "138",
  "1": "117",
  "2": "161",
  "3": "155",
  "4": "168",
  "5": "110"
  },
  "flow_end_dates": {
  "0": "2019-01-03",
  "1": "2019-01-04",
  "2": "2019-01-07",
  "3": "2019-01-08",
  "4": "2019-01-09",
  "5": "2019-01-10"
  },

  "flow_start_dates": {
  "0": "2019-01-03",
  "1": "2019-01-04",
  "2": "2019-01-05",
  "3": "2019-01-08",
  "4": "2019-01-09",
  "5": "2019-01-10"
  },
  "highs": {
  "0": "2.700",
  "1": "2.570",
  "2": "2.720",
  "3": "2.610",
  "4": "2.760",
  "5": "2.725"
  },
  "issue_dates": {
  "0": "2019-01-03",
  "1": "2019-01-04",
  "2": "2019-01-07",
  "3": "2019-01-08",
  "4": "2019-01-09",
  "5": "2019-01-10"
  },
  "location_names": {
  "0": "Chicago Citygate",
  "1": "Chicago Citygate",
  "2": "Chicago Citygate",
  "3": "Chicago Citygate",
  "4": "Chicago Citygate",
  "5": "Chicago Citygate"
  },
  "lows": {
  "0": "2.550",
  "1": "2.460",
  "2": "2.525",
  "3": "2.500",
  "4": "2.700",
  "5": "2.680"
  },
  "pointcodes": {
  "0": "MCWCCITY",
  "1": "MCWCCITY",
  "2": "MCWCCITY",
  "3": "MCWCCITY",
  "4": "MCWCCITY",
  "5": "MCWCCITY"
  },
  "region_names": {
  "0": "Midwest",
  "1": "Midwest",
  "2": "Midwest",
  "3": "Midwest",
  "4": "Midwest",
  "5": "Midwest"
  },
  "trade_dates": {
  "0": "2019-01-02",
  "1": "2019-01-03",
  "2": "2019-01-04",
  "3": "2019-01-07",
  "4": "2019-01-08",
  "5": "2019-01-09"
  },
  "volumes": {
  "0": "641",
  "1": "484",
  "2": "924",
  "3": "795",
  "4": "849",
  "5": "598"
  }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = '/dailyHistoricalData.json?start_date=2019-01-01&end_date=2019-01-09&location=MCWCCITY'
  r = requests.get(url, headers=head)

MidDay Historical Data

Return to Index

Returns historical time series data in JSON format for the selected pointcode and date range. Length of historical data vary by point.

URL
/middayHistoricalData.json?start_date=start_date (yyyy-mm-dd)&end_date=end_date (yyyy-mm-dd)&location=pointcode

Example query for Chicago Citygate (pointcode: MCWCCITY) for the period of 2019-01-01 through 2019-12-31:
https://api.ngidata.com/middayHistoricalData.json?start_date=2019-01-01&end_date=2019-12-31&location=MCWCCITY

Method:
GET

URL Params
Required:
none
Optional:
start_date (yyyy-mm-dd) Defaults to today’s date - 365 days
end_date (yyyy-mm-dd) Defaults to today
location (pointcode) Defaults to Henry Hub

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
  "averages": {
  "0": "2.51",
  "1": "2.616",
  "2": "2.552",
  "3": "2.733",
  "4": "2.701"
  },
  "deals": {
  "0": "116",
  "1": "158",
  "2": "152",
  "3": "166",
  "4": "108"
  },
  "flow_end_dates": {
  "0": "2019-01-04",
  "1": "2019-01-07",
  "2": "2019-01-08",
  "3": "2019-01-09",
  "4": "2019-01-10"
  },
  "flow_start_dates": {
  "0": "2019-01-04",
  "1": "2019-01-05",
  "2": "2019-01-08",
  "3": "2019-01-09",
  "4": "2019-01-10"
  },
  "highs": {
  "0": "2.57",
  "1": "2.72",
  "2": "2.61",
  "3": "2.75",
  "4": "2.72"
  },
  "issue_dates": {
  "0": "2019-01-04",
  "1": "2019-01-07",
  "2": "2019-01-08",
  "3": "2019-01-09",
  "4": "2019-01-10"
  },
  "location_names": {
  "0": "Chicago Citygate",
  "1": "Chicago Citygate",
  "2": "Chicago Citygate",
  "3": "Chicago Citygate",
  "4": "Chicago Citygate"
  },
  "lows": {
  "0": "2.46",
  "1": "2.525",
  "2": "2.5",
  "3": "2.7",
  "4": "2.68"
  },
  "pointcodes": {
  "0": "MCWCCITY",
  "1": "MCWCCITY",
  "2": "MCWCCITY",
  "3": "MCWCCITY",
  "4": "MCWCCITY"
  },
  "region_names": {
  "0": "Midwest",
  "1": "Midwest",
  "2": "Midwest",
  "3": "Midwest",
  "4": "Midwest"
  },
  "trade_dates": {
  "0": "2019-01-03",
  "1": "2019-01-04",
  "2": "2019-01-07",
  "3": "2019-01-08",
  "4": "2019-01-09"
  },
  "volumes": {
  "0": "483",
  "1": "917",
  "2": "778",
  "3": "848",
  "4": "595"
  }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = '/middayHistoricalData.json?start_date=2019-01-01&end_date=2019-01-09&location=MCWCCITY'
  r = requests.get(url, headers=head)

Weekly Historical Data

Return to Index

Returns historical time series data in JSON format for the selected pointcode and date range. Length of historical data vary by point. Please see NGI’s Price Index Methodology to find the dates we began publishing each point.

URL
/weeklyHistoricalData.json?start_date=start_date (yyyy-mm-dd)&end_date=end_date (yyyy-mm-dd)&location=pointcode

Example query for Chicago Citygate (pointcode: MCWCCITY) for the period of 2019-01-01 through 2019-12-31:
https://api.ngidata.com/weeklyHistoricalData.json?start_date=2019-01-01&end_date=2019-12-31&location=MCWCCITY

Method:
GET

URL Params
Required:
none
Optional:
start_date (yyyy-mm-dd) Defaults to today’s date - 365 days
end_date (yyyy-mm-dd) Defaults to today
location (pointcode) Defaults to Henry Hub

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
  "averages": {
  "0": "2.590",
  "1": "2.685",
  "2": "3.380",
  "3": "3.090",
  "4": "2.645"
  },
  "deals": {
  "0": "416",
  "1": "683",
  "2": "650",
  "3": "506",
  "4": "418"
  },
  "highs": {
  "0": "2.720",
  "1": "2.760",
  "2": "3.800",
  "3": "3.250",
  "4": "2.950"
  },
  "issue_dates": {
  "0": "2019-01-07",
  "1": "2019-01-14",
  "2": "2019-01-22",
  "3": "2019-01-28",
  "4": "2019-02-04"
  },
  "location_names": {
  "0": "Chicago Citygate",
  "1": "Chicago Citygate",
  "2": "Chicago Citygate",
  "3": "Chicago Citygate",
  "4": "Chicago Citygate"
  },
  "lows": {
  "0": "2.460",
  "1": "2.500",
  "2": "3.150",
  "3": "2.950",
  "4": "2.440"
  },
  "pointcodes": {
  "0": "MCWCCITY",
  "1": "MCWCCITY",
  "2": "MCWCCITY",
  "3": "MCWCCITY",
  "4": "MCWCCITY"
  },
  "region_names": {
  "0": "Midwest",
  "1": "Midwest",
  "2": "Midwest",
  "3": "Midwest",
  "4": "Midwest"
  },
  "survey_ends": {
  "0": "2019-01-04",
  "1": "2019-01-11",
  "2": "2019-01-18",
  "3": "2019-01-25",
  "4": "2019-02-01"
  },
  "survey_starts": {
  "0": "2019-01-02",
  "1": "2019-01-07",
  "2": "2019-01-14",
  "3": "2019-01-22",
  "4": "2019-01-31"
  },
  "volumes": {
  "0": "2049",
  "1": "3516",
  "2": "3324",
  "3": "2949",
  "4": "2812"
  }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = '/weeklyHistoricalData.json?start_date=2019-01-01&end_date=2019-02-04&location=MCWCCITY'
  r = requests.get(url, headers=head)

Shale Historical Data

Return to Index

Returns historical time series data in JSON format for the selected pointcode and date range. Length of historical data vary by point. Please see NGI’s Price Index Methodology to find the dates we began publishing each point.

URL
/shaleHistoricalData.json?start_date=start_date (yyyy-mm-dd)&end_date=end_date (yyyy-mm-dd)&location=pointcode

Example query for the Barnett Shale price (pointcode: SNTXBARNETT) for the period of 2019-01-01 through 2019-12-31:
https://api.ngidata.com/shaleHistoricalData.json?start_date=2019-01-01&end_date=2019-12-31&location=SNTXBARNETT

Method:
GET

URL Params
Required:
none
Optional:
start_date (yyyy-mm-dd) Defaults to today’s date - 365 days
end_date (yyyy-mm-dd) Defaults to today
location (pointcode) Defaults to Permian Basin

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
  "averages": {
  "0": "2.755",
  "1": "2.630",
  "2": "2.525",
  "3": "2.470",
  "4": "2.630",
  "5": "2.565"
  },
  "deals": {
  "0": "79",
  "1": "81",
  "2": "72",
  "3": "72",
  "4": "63",
  "5": "54"
  },
  "flow_end_dates": {
  "0": "2019-01-03",
  "1": "2019-01-04",
  "2": "2019-01-07",
  "3": "2019-01-08",
  "4": "2019-01-09",
  "5": "2019-01-10"
  },
  "flow_start_dates": {
  "0": "2019-01-03",
  "1": "2019-01-04",
  "2": "2019-01-05",
  "3": "2019-01-08",
  "4": "2019-01-09",
  "5": "2019-01-10"
  },
  "highs": {
  "0": "2.820",
  "1": "2.700",
  "2": "2.790",
  "3": "2.510",
  "4": "2.700",
  "5": "2.620"
  },
  "issue_dates": {
  "0": "2019-01-03",
  "1": "2019-01-04",
  "2": "2019-01-07",
  "3": "2019-01-08",
  "4": "2019-01-09",
  "5": "2019-01-10"
  },
  "location_names": {
  "0": "Barnett",
  "1": "Barnett",
  "2": "Barnett",
  "3": "Barnett",
  "4": "Barnett",
  "5": "Barnett"
  },
  "lows": {
  "0": "2.700",
  "1": "2.500",
  "2": "2.400",
  "3": "2.420",
  "4": "2.580",
  "5": "2.515"
  },
  "pointcodes": {
  "0": "SNTXBARNETT",
  "1": "SNTXBARNETT",
  "2": "SNTXBARNETT",
  "3": "SNTXBARNETT",
  "4": "SNTXBARNETT",
  "5": "SNTXBARNETT"
  },
  "region_names": {
  "0": "Gulf Coast",
  "1": "Gulf Coast",
  "2": "Gulf Coast",
  "3": "Gulf Coast",
  "4": "Gulf Coast",
  "5": "Gulf Coast"
  },
  "trade_dates": {
  "0": "2019-01-02",
  "1": "2019-01-03",
  "2": "2019-01-04",
  "3": "2019-01-07",
  "4": "2019-01-08",
  "5": "2019-01-09"
  },
  "volumes": {
  "0": "535",
  "1": "430",
  "2": "364",
  "3": "374",
  "4": "373",
  "5": "257"
  }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = '/shaleHistoricalData.json?start_date=2019-01-01&end_date=2019-01-09&location=SNTXBARNETT'
  r = requests.get(url, headers=head)

Mexico Historical Data

Return to Index

Returns historical time series data in JSON format for the selected pointcode and date range. Length of historical data vary by point. Prices are returned in both $U.S./MMBtu and MXP/Gj format.

URL
/mxcpHistoricalData.json?start_date=start_date (yyyy-mm-dd)&end_date=end_date (yyyy-mm-dd)&location=pointcode

Example query for the Tula, MX price (pointcode: MXCPTULA) for the period of 2019-01-01 through 2019-12-31:
https://api.ngidata.com/mxcpHistoricalData.json?start_date=2019-01-01&end_date=2019-12-31&location=MXCPTULA

Method:
GET

URL Params
Required:
none
Optional:
start_date (yyyy-mm-dd) Defaults to today’s date - 365 days
end_date (yyyy-mm-dd) Defaults to today
location (pointcode) Defaults to El Encino

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
  "issue_dates": {
  "0": "2019-01-02",
  "1": "2019-01-03",
  "2": "2019-01-04",
  "3": "2019-01-07",
  "4": "2019-01-08",
  "5": "2019-01-09"
  },
  "location_names": {
  "0": "Tula",
  "1": "Tula",
  "2": "Tula",
  "3": "Tula",
  "4": "Tula",
  "5": "Tula"
  },
  "pointcodes": {
  "0": "MXCPTULA",
  "1": "MXCPTULA",
  "2": "MXCPTULA",
  "3": "MXCPTULA",
  "4": "MXCPTULA",
  "5": "MXCPTULA"
  },
  "prices_mxp": {
  "0": "73.352",
  "1": "64.582",
  "2": "63.875",
  "3": "63.371",
  "4": "63.02",
  "5": "65.539"
  },
  "prices_usd": {
  "0": "3.936",
  "1": "3.478",
  "2": "3.437",
  "3": "3.43",
  "4": "3.441",
  "5": "3.574"
  }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = '/mxcpHistoricalData.json?start_date=2019-01-01&end_date=2019-01-09&location=MXCPTULA'
  r = requests.get(url, headers=head)

Forward Time Series Historical Data By Contract

Return to Index

Returns a time series of historical monthly contract prices in JSON format for the selected pointcode, date range and contract. Length of historical data vary by point. Prices are returned in both fixed and basis price format.

URL
/forwardHistoricalData.json?start_date=start_date (yyyy-mm-dd)&end_date=end_date (yyyy-mm-dd)&location=pointcode&contract=contract (yyyy-mm-dd)

Example query to select price history of Chicago Citygate (pointcode: MCWCCITY) Feb-2020 contract as it traded over the period from 2019-01-01 through 2019-12-31:
https://api.ngidata.com/forwardHistoricalData.json?start_date=2019-01-01&end_date=2019-12-31&location=MCWCCITY&contract=2020-02-01

Method:
GET

URL Params
Required:
none
Optional:
start_date (yyyy-mm-dd) Defaults to today’s date - 365 days
end_date (yyyy-mm-dd) Defaults to today
location (pointcode) Defaults to Henry Hub
contract (yyyy-mm-dd) Defaults to current prompt month

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

{
  "basis_prices": {
  "0": "-0.048",
  "1": "-0.063",
  "2": "-0.029",
  "3": "-0.061",
  "4": "-0.056",
  "5": "-0.034"
  },
  "contract_month": {
  "0": "2019-02-01",
  "1": "2019-02-01",
  "2": "2019-02-01",
  "3": "2019-02-01",
  "4": "2019-02-01",
  "5": "2019-02-01"
  },
  "fixed_prices": {
  "0": "2.910",
  "1": "2.882",
  "2": "3.015",
  "3": "2.883",
  "4": "2.911",
  "5": "2.950"
  },
  "location_names": {
  "0": "Chicago Citygate",
  "1": "Chicago Citygate",
  "2": "Chicago Citygate",
  "3": "Chicago Citygate",
  "4": "Chicago Citygate",
  "5": "Chicago Citygate"
  },
  "pointcodes": {
  "0": "MCWCCITY",
  "1": "MCWCCITY",
  "2": "MCWCCITY",
  "3": "MCWCCITY",
  "4": "MCWCCITY",
  "5": "MCWCCITY"
  },
  "trade_dates": {
  "0": "2019-01-02",
  "1": "2019-01-03",
  "2": "2019-01-04",
  "3": "2019-01-07",
  "4": "2019-01-08",
  "5": "2019-01-09"
  }
}

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = '/forwardHistoricalData.json?start_date=2019-01-01&end_date=2019-01-09&location=MCWCCITY'
  r = requests.get(url, headers=head)

How Corrections Work

Return to Index

When necessary, NGI may correct published prices within three business days of their publication. These corrections are rare but do occur for some of our data series. The following data series can be corrected:

  1. Daily GPI Datafeed
  2. Weekly GPI Datafeed
  3. Bidweek Survey Datafeed
  4. Shale Daily Datafeed

When a correction is made, it is immediately reflected in the API and all routes described in this API return the most up-to-date values available at the time a request is made. To make sure you capture any corrections in our data, we recommend simply processing an issue (referenced by issue date) again each day for three days following its publication after which time, corrections will no longer be made.

Alternatively, we offer correction files containing the corrected data for every correction ever made. These files are served in their legacy TXT formats and you can find the routes for scraping them under the index for each correctable data series.


Daily GPI Datafeed Corrections

Return to Index

Returns the legacy tab-delimited text version of the Daily GPI corrections file.

URL
/dailyDatafeedCorrection.txt

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

PointCode Issue Date  Trade Date  Region  Pricing Point Low High  Average Volume  Deals Delivery Start Date Delivery End Date
SLANGPL 2006-05-02  2006-05-01  Louisiana NGPL LA 5.90  5.90  5.90  5 4 2006-05-02  2006-05-02
STXAGUAD  2005-02-18  2005-02-17  South Texas Agua Dulce  5.67  5.81  5.76  33  4 2005-02-18  2005-02-18
STXST30 2006-07-24  2006-07-21  South Texas Transco St. 30  5.45  5.55  5.52  16  2 2006-07-22  2006-07-24
MCWNORW 2007-06-05  2007-06-04  Midcontinent  CenterPoint West (Reliant)  6.98  7.15  7.07  23  6 2007-06-05  2007-06-05
MCWDAWN 2008-09-23  2008-09-22  Midwest Dawn  7.38  7.50  7.43  805 117 2008-09-23  2008-09-23
RMTEPBON  2010-03-24  2010-03-23  Rocky Mountains El Paso Bondad  3.93  4.00  3.98  167 31  2010-03-24  2010-03-24
STXFGTZ1  2011-03-29  2011-03-28  South Texas Florida Gas Zone 1  4.27  4.40  4.36  23  7 2011-03-29  2011-03-29
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/dailyDatafeedCorrection.txt'
  r = requests.get(url, headers=head)

Weekly GPI Datafeed Corrections

Return to Index

Returns the legacy tab-delimited text version of the Weekly GPI corrections file.

URL
/weeklyDatafeedCorrection.txt

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

PointCode Issue Date  Survey Start  Survey End  Bidweek region  pricing point low high  Average Volume  Deals
STXAGUAD  2010-09-06  2010-08-31  2010-09-03  N South Texas Agua Dulce  3.70  3.80  3.76  208 16
STXFGTZ1  2010-09-06  2010-08-31  2010-09-03  N South Texas Florida Gas Zone 1  3.72  3.84  3.80  13  6
STXNGPL 2010-09-06  2010-08-31  2010-09-03  N South Texas NGPL S. TX  3.64  3.78  3.73  904 137
STXTENN 2010-09-06  2010-08-31  2010-09-03  N South Texas Tennessee 3.60  3.85  3.70  2538  487
STXTETCO  2010-09-06  2010-08-31  2010-09-03  N South Texas Texas Eastern S. TX 3.58  3.78  3.67  329 74
STXST30 2010-09-06  2010-08-31  2010-09-03  N South Texas Transco St. 30  3.65  3.82  3.74  774 159
STXRAVG 2010-09-06  2010-08-31  2010-09-03  N South Texas Regional Avg. 3.58  3.85  3.73    
ETXCARTH  2010-09-06  2010-08-31  2010-09-03  N East Texas  Carthage  3.55  3.73  3.63  903 201
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/weeklyDatafeedCorrection.txt'
  r = requests.get(url, headers=head)

Bidweek Survey Datafeed Corrections CSV

Return to Index

Returns the legacy tab-delimited text version of the Bidweek Survey corrections file.

URL
/bidweekDatafeedCorrection.txt

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

PointCode Issue Date  Survey Start  Survey End  Bidweek region  pricing point low high  Average Volume  Deals
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/bidweekDatafeedCorrection.txt'
  r = requests.get(url, headers=head)

Shale Daily Datafeed Corrections

Return to Index

Returns the legacy tab-delimited text version of the Shale Daily corrections file. At the time of writing, this file is blank as NGI has never published a correction to Shale Daily.

URL
/shaleDatafeedCorrection.txt

Method:
GET

URL Params
Required: none
Optional: none

Data Params

   {
        "Authorization": 'Bearer ' + auth_token
   }

Success Response:
Code: 200
Content:

Point Code  Region  Pricing Point Low High  Average Volume  Deals Trade Date  Delivery Start Date Delivery End Date Issue Date
...

Sample Call in Python:

  import requests
  auth_token='YourAuthToken'
  head = {'Authorization': 'Bearer ' + auth_token}
  url = 'https://api.ngidata.com/shaleDatafeedCorrection.txt'
  r = requests.get(url, headers=head)