CUSTOMER DOCUMENTATION
eDataFeed
version 5.2.25
#522665 Last Updated on 9/7/2017 Page 1 of 22
Customer Documentation: eDataFeed
TABLE OF CONTENTS
EDATAFEED..................................................................................................................................................1
VERSION 5.2.25.............................................................................................................................................1
1 PRODUCT SHEET...............................................................................................................................3
1.1 OVERVIEW.......................................................................................................................................3
1.2 BENEFITS.........................................................................................................................................3
1.3 LOCATIONAL MARGINAL PRICING (LMP)......................................................................................3
1.4 TIE FLOW DATA..............................................................................................................................3
1.5 TRANSFER INTERFACES...................................................................................................................3
2 WHAT’S NEW.......................................................................................................................................4
2.1 WHAT’S NEW IN VERSION 5.2.25.....................................................................................................4
2.2 WHAT’S NEW IN VERSION 5.1.13.....................................................................................................4
2.3 WHAT’S NEW IN VERSION 5.1.8.......................................................................................................4
2.4 WHAT’S NEW IN VERSION 5.1.7.......................................................................................................4
2.5 WHAT’S NEW IN VERSION 5.0.12.....................................................................................................4
2.6 WHAT’S NEW IN VERSION 5.0.10.....................................................................................................4
2.7 WHAT’S NEW IN VERSION 5.0.8.......................................................................................................5
2.8 WHAT’S NEW IN VERSION 5.0.3.....................................................................................................5
2.9 WHAT’S NEW IN VERSION 5...........................................................................................................5
3 FEATURES AND FUNCTIONALITY...............................................................................................6
4 XML........................................................................................................................................................8
4.1 2.1. RESULT XML: EXAMPLE #1....................................................................................................8
4.2 2.2. RESULT XML: EXAMPLE #2....................................................................................................8
4.3 2.3. RESULT XML: EXAMPLE #3....................................................................................................9
4.4 2.4. RESULT XML: EXAMPLE #4....................................................................................................9
5 INSTALLATION GUIDE FOR NEW USERS (YOU MAY WISH TO PRINT THIS PAGE)...10
6 SAMPLE CLIENT INSTALLATION AND TESTING (JAVA)....................................................10
7 SAMPLE CLIENT INSTALLATION AND TESTING (.NET).....................................................10
8 NOTE FOR USERS OF CUSTOM CLIENTS.................................................................................11
9 SECURITY CERTIFICATE INSTALLATION/UPDATE (FOR .NET CLIENTS)....................11
10 APPLICATIONS PROGRAMMING INTERFACE.......................................................................11
11 DATA DICTIONARY.........................................................................................................................20
11.1 PRICING NODE DESCRIPTION........................................................................................................20
11.2 NODE TYPE DESCRIPTION.............................................................................................................20
11.3 PRICING NODE LMP......................................................................................................................21
11.4 ACTUAL VALUE DATA..................................................................................................................22
11.5 Constraint Data.............................................................................................................................22
#522665 Last Updated on 9/7/2017 Page 2 of 22
Customer Documentation: eDataFeed
1 Product Sheet
1.1 Overview
eDataFeed is a PJM Web service that provides time-sensitive pricing and load information via a Simple Object
Access Protocol (SOAP) interface which allows subscribers to program automated requests for customized data.
eDataFeed provides subscribers with the ability to select and “stream” PJM market and system information directly
into their systems. PJM serves as an independent information clearinghouse as it coordinates the buying, selling and
trading of electric energy and energy-related products among the more than 600 companies participating in the PJM
markets. eDataFeed delivers pricing and load data in a format that enables data capture, analysis and decision support
to meet the trading, risk management and business decisions of PJM’s members (customers).
1.2 Benefits
eDataFeed provides locational marginal pricing (LMP) and load information every five minutes directly to a user’s
decision making and control systems. This service delivers information how and when the user wants it and in a
format that enables computational ease. It eliminates processes that require the user go to an information resource
and “scrape” or pull data from HTML pages. Continuously monitoring all LMP and load data on the PJM Web site is
no longer necessary.
1.3 Locational Marginal Pricing (LMP)
LMP, the heart of PJM’s competitive wholesale electricity market system since 1998, calculates and presents a
transparent price for electricity at each of 9,000 points (busses/aggregates) on the transmission grid that PJM
manages. These prices reflect actual system conditions and are updated every five minutes. When there is no
congestion, electricity travels over the high-voltage transmission grid at a uniform price. Should congestion occur on
the grid, then the buyer pays an increased price, which is determined by where the electricity is generated and where
it is consumed. With LMP, PJM has lessened system congestion, improved grid reliability, stimulated investment in
generation and transmission, produced more options for purchasing energy cost effectively and provided energy
producers with more markets for selling electricity and improved liquidity.
1.4 Tie Flow Data
Tie flows are power flows between PJM and neighboring control areas. Positive values are for net megawatt (MW)
flows into PJM, while negative values are for net MW flows out of PJM. Tie flows are shown for both actual and
scheduled power flows, with actual values updated every five minutes and scheduled values updated every hour.
1.5 Transfer Interfaces
The transfers across an internal PJM interface are the MW flows across the transmission paths within PJM. Reactive
transfer limits (levels) are the MW transfer beyond which reactive and voltage criteria are violated. Reactive transfer
limits are used to limit the total flow over the interfaces to protect the system from large voltage drops or collapse
caused by any viable contingency.
The PJM dispatchers continuously monitor and control the flow on each transfer interface so that the flows remain at
or below the transfer limits. This ensures that no single contingency loss of generation or transmission in or outside
the PJM regional transmission organization (RTO) causes a voltage drop greater than the applicable voltage drop
criteria.
#522665 Last Updated on 9/7/2017 Page 3 of 22
Customer Documentation: eDataFeed
2 What’s New
2.1 What’s new in version 5.2.25
Version 5.2.25 provides 3 new data feeds for solar data (getAllSolarPowerData, getAllSolarPowerForecast, and
getAllSolarPowerBTM).
2.2 What’s new in version 5.1.13
Version 5.1.8 provides two new data feeds (getAllItSchedLmps and getNewestITScedSolutionDate) consisting of IT
SCED LMP data for four NY Interfaces (HUDSONTP, LINDENVFT, NEPTUNE and NYIS). The IT SCED LMP
data is posted each time a SCED solution is approved, approximately every 4 to 6 minutes. The data consists of the
forecast LMP values for four intervals on 15 minute boundaries ~30, 45, 90 and 135 minutes in the future.
2.3 What’s new in version 5.1.8
Version 5.1.8 provides three new data feeds for Ancillary Services Settlement data (getAllAncillarySettlement,
getNewestAncillarySettlementDate and getAllAncillarySettlementByDate). The Ancillary Services Settlement data
is posted on each business day for the previously unsettled market day(s) and consists of hourly regulation and
reserve data for a market day.
In addition a fix to the display of Aggregate Settlement data has been implemented which will clarify the Fall
Daylight Savings Time data for the 01:00 hours. In the future this data will be formatted with the correct timestamps
as shown here:
01:00 EDT <timestamp>2012-11-04T01:00:00-04:00</timestamp>
01:00 EST <timestamp>2012-11-04T01:00:00-05:00</timestamp>
2.4 What’s new in version 5.1.7
Version 5.1.7 provides two new data feeds for Ancillary Services data (getAllAncillary and
getNewestAncillaryDate). The Ancillary Services data is updated on a 5 minute basis and consists of regulation and
reserve data.
2.5 What’s new in version 5.0.12
Version 5.0.12 provides several new data feeds for Wind data (getAllWindForecast, getNewestWindDate and
getNewestWindForecastDate). The Wind Forecast data is updated on an hourly basis and consists of the forecast
total wind generation in MW for the entire RTO. Data consists of 24 hours of data beginning at midnight the current
day and results include 5-minute increments for the first six hours and hourly increments thereafter.
2.6 What’s new in version 5.0.10
Version 5.0.10 provides a new data feed for Wind data (getAllWind). The Wind data is updated on a 15 second basis
and consists of the total wind generation in MW for the entire RTO.
In addition the following issues have been addressed in this release:
The Java Client was rebuilt to consist of a single .jar file
ACE and Dispatch Rate data are now cached in memory to decrease database overloading issues. Check for new
data occurs once per second.
#522665 Last Updated on 9/7/2017 Page 4 of 22
Customer Documentation: eDataFeed
2.7 What’s new in version 5.0.8
Version 5.0.8 provides a pair of new data feeds for Constraint data (getNewestConstraintDate and
getAllLatestConstraints). The Constraint data is updated on a 5 minute basis.
In addition the following issues have been addressed in this release:
Java client output filename is incorrect for getAllTieFlow and getAllAggregateHourlyLmp
Java client fails with “Unconnected sockets not implemented” error when using JRE 1.6.0_07 through 1.6.0_012.
NOTE: This fix required the upgrade of some of the Java Client library JAR files.
Soap:address location is incorrect in WSDL.
2.8 What’s New in Version 5.0.3
Version 5.0.3 provides two new data feeds, PJM Control Area ACE values and Dispatch Rates for the PJM control
zones. These data values are updated every 8-24 seconds. In addition, this release includes LMP values for external
busses and performance improvements for the getValidBusNames and getValidAggregateNames web services.
2.9 What’s New in Version 5
Version 5 provides two new data feeds, (72-hour load forecast and Day-Ahead Demand for the RTO and Mid-
Atlantic and Western regions), a new Java client and a C#.Net client, support for compression built into in the sample
clients, access to up to 14 days of historical data, support for WS-Security and timestamps on the result sets.
IMPORTANT NOTE: Version 5 clients are not compatible with version 4 and the reverse is also true. While the
result set data remains the same at the collection level to ensure the least possible impact to result set parsing
routines, the new data feeds, standards compliance, administrative enhancements and security implementation result
in an interface which, while very similar to the previous version, is unfortunately not compatible.
Version 5 client parameter strings are comma separated variable strings rather than space separated strings.
getBusDALmpbyType and getBusDALmpByTypeDate no longer support the startingBusNumber and busCount
parameters as the entire result set can be returned in one operation.
#522665 Last Updated on 9/7/2017 Page 5 of 22
Customer Documentation: eDataFeed
3 Features and Functionality
One eDataFeed account will be provided to each PJM member.
eDataFeed will provide the following LMP price data, including buss name/location, pNode ID and a Greenwich
Mean Time (GMT) date and time stamp:
o Five Minute LMPs – Every five minutes PJM calculates LMPs for all busses on the grid. Prices for hubs,
interfaces and aggregates are calculated from these values. Weighted average prices for zones also are
calculated.
o Hourly Integrated LMPs1 – Every hour PJM calculates an hourly integrated price for the previous hour for
each aggregate based on an average of the available five-minute LMPs for that hour.
o Hourly Settlement LMPsError: Reference source not found – Around noon, hourly settlement LMPs for
all zones and aggregates for the previous day are available. Exceptions to the “next day noon” timeframe
occur on Friday and Saturday, when these prices will be posted by noon on Monday and for weekday holidays
when the prices usually will be posted around noon of the next PJM business day.
o Day Ahead LMPsError: Reference source not found – Day-ahead hourly LMPs are calculated for all
busses, zones and aggregates by 4:00 p.m. Day-ahead prices are posted every day of the year.
eDataFeed will provide the following load data with a GMT date and time stamp:
o Instantaneous Loads Every five minutes eDataFeed will update the following instantaneous load (real time)
MW values:
PJM RTO Total
Mid Atlantic Region
Southern Region
Western Region
Zonal (18 Transmission Zones)
o Tie Flows – Actual and scheduled tie flow data for power flows between PJM and the following control areas
will be available (actual values are updated every five minutes and scheduled values are updated every hour):
21 Tie flows
o Transfer Interfaces – Every five minutes eDataFeed will update the following MW values for transfer
interfaces:
Actual
Warning limit – 95% of transfer limit
Transfer limit (level)
The eight transfer interfaces are:
Western (“West” in eData)
Central (“Cent” in eData)
Eastern (“East” in eData)
Bedington–Black Oak (“BedB” in eData)
AP South (“APS” in eData)
500X (“500x” in eData)
AEP-Dominion (AEP/DOM)
Cleveland Public Power (CPP)
o Forecast Data – Forecast data for the regional and total RTO forecasts are posted every day of the year.
Updated forecasts are posted at approximately 15 minutes and 45 minutes after each hour.
o Day-ahead Demand Data – The Day-ahead demand forecast is posted every day at approximately 4:00 p.m.
Eastern time.
o PJM Control Area ACE – The Area Control Error value is updated every 15 seconds
1
All times shown for hourly LMPs are for the hour ending.
#522665 Last Updated on 9/7/2017 Page 6 of 22
Customer Documentation: eDataFeed
o Dispatch Rates – Dispatch Rates for the PJM Control Zones are updated every 8-24 seconds
o Constraint Data – Data regarding the active constraints, contingencies and shadow prices is updated every 5
minutes.
o Wind Data – Data regarding the current total RTO wind generation is updated every 15 seconds.
o Solar Data – Data regarding the current total RTO solar generation is updated every 10 minutes.
eDataFeed subscribers will request access via PJM’s Customer Account Maintenance (CAM) registration screen
account set up on PJM’s eSuite Web page at www.pjm.com.
The application employs a Simple Object Access Protocol (SOAP) format for data transport capability.
Software developers at eDataFeed subscriber sites will have to write code to receive the service. PJM will publish
the application program interface (API) to enable these efforts.
Non-member and redistribution subscriptions to eDataFeed are now available. Please contact Member Services
for more information.
#522665 Last Updated on 9/7/2017 Page 7 of 22
Customer Documentation: eDataFeed
4 XML
With the 5.0 release the eDataFeed application was migrated from the Weblogic 8.1 platform to the Apache Tomcat
6.0 platform.
PJM has tried to make the transition as painless as possible and the format of the Response XML conforms to the
Release 4.3 format as closely as possible. It should be relatively easy to migrate to the new version.
4.1 2.1. Result XML: Example #1
<ns2:getBusLmpByNameResponse xmlns:ns2="http://edatafeed.pjm.com/">
<collectionNodeLmp>
<timestamp>2008-07-25T14:25:00-04:00</timestamp>
<nodeLmp>
<pnodeId>65732121</pnodeId>
<name>0902 138 KV ESS J</name>
<mccValue>-5.82</mccValue>
<mlcValue>-4.27</mlcValue>
<price>56.53</price>
<type>Load</type>
<timestamp>2008-07-25T14:25:00-04:00</timestamp>
<errorCodeId>0</errorCodeId>
</nodeLmp>
<nodeLmp>
<pnodeId>44460767</pnodeId>
<name>MTROSE 115 KV 3 BANK</name>
<mccValue>-8.46</mccValue>
<mlcValue>2.54</mlcValue>
<price>60.7</price>
<type>Load</type>
<timestamp>2008-07-25T14:25:00-04:00</timestamp>
<errorCodeId>0</errorCodeId>
</nodeLmp>
</collectionNodeLmp>
</ns2:getBusLmpByNameResponse>
4.2 2.2. Result XML: Example #2
<ns2:getAllRegionalInstantaneousLoadResponse xmlns:ns2="http://edatafeed.pjm.com/">
<collectionActualValueData>
<timestamp>2008-07-25T14:25:00-04:00</timestamp>
<actualValueData>
<dataSource>InstantaneousLoadData</dataSource>
<name>Mid-Atlantic Region</name>
<timestamp>2008-07-25T14:25:00-04:00</timestamp>
<value>32356.0</value>
<errorCodeId>0</errorCodeId>
</actualValueData>
<actualValueData>
<dataSource>InstantaneousLoadData</dataSource>
<name>PJM RTO Total</name>
<timestamp>2008-07-25T14:25:00-04:00</timestamp>
<value>78987.0</value>
<errorCodeId>0</errorCodeId>
</actualValueData>
<actualValueData>
<dataSource>InstantaneousLoadData</dataSource>
<name>Southern Region</name>
<timestamp>2008-07-25T14:25:00-04:00</timestamp>
#522665 Last Updated on 9/7/2017 Page 8 of 22
Customer Documentation: eDataFeed
<value>10012.0</value>
<errorCodeId>0</errorCodeId>
</actualValueData>
<actualValueData>
<dataSource>InstantaneousLoadData</dataSource>
<name>Western Region</name>
<timestamp>2008-07-25T14:25:00-04:00</timestamp>
<value>36620.0</value>
<errorCodeId>0</errorCodeId>
</actualValueData>
</collectionActualValueData>
</ns2:getAllRegionalInstantaneousLoadResponse>
4.3 2.3. Result XML: Example #3
<ns2:getValidBusTypesResponse xmlns:ns2="http://edatafeed.pjm.com/">
<collectionNodeType>
<nodeType>
<name>Load</name>
</nodeType>
<nodeType>
<name>Generation</name>
</nodeType>
<nodeType>
<name>500KV</name>
</nodeType>
</collectionNodeType>
</ns2:getValidBusTypesResponse>
4.4 2.4. Result XML: Example #4
<ns2:getValidBusNamesResponse xmlns:ns2="http://edatafeed.pjm.com/">
<collectionNodeDescription>
<nodeDescription>
<pnodeId>65732121</pnodeId>
<name>0902 138 KV ESS J</name>
<type>Load</type>
<effectiveDate>2008-03-12T00:00:00-04:00</effectiveDate>
</nodeDescription>
<nodeDescription>
<pnodeId>40243273</pnodeId>
<name>09AIRWAY69 KV 6641LOAD</name>
<type>Load</type>
<effectiveDate>2005-03-01T00:00:00-05:00</effectiveDate>
</nodeDescription>
</collectionNodeDescription>
</ns2:getValidBusNamesResponse>
#522665 Last Updated on 9/7/2017 Page 9 of 22
Customer Documentation: eDataFeed
5 Installation Guide for New Users (you may wish to print this page)
1. Have your CAM administrator register your company for eDataFeed. The form is located at
http://www.pjm.com/Media/about-pjm/member-services/member-forms/customer-account-manager-designation-
form.doc. Print this document. Complete the document and select “eDataFeed.” Fax or mail it to PJM. (The
fax/contact information is included in the documents.)
2. Have your CAM administrator create a new account for your organization from within CAM specifically for
eDataFeed by going to https://esuite.pjm.com and navigating to CAM.
Note: modifying an existing CAM account is not appropriate because a single dedicated account for eDataFeed
for each eDataFeed organization is required.
Note: The following steps should be coordinated as single IT effort for your single eDataFeed company
account.
3. You or your CAM administrator will need to login into eSuite (https://esuite.pjm.com) with your new account and
change your password or your eDataFeed account.
4. Sign up for eDataFeed e-mail notification to be notified about enhancements, important changes, outages, etc.
6 Sample Client Installation and Testing (JAVA)
1. Install either the Java JRE (1.5.0_13 or greater*) or the Java Solution Development Kit (Java SDK), which
contains the JRE. Both are available from Sun Microsystems. The latest Java SDK download can be found at
http://java.sun.com/j2se/downloads.html for Solaris, Linux, and Windows. Ports to other operation systems can be
found at http://java.sun.com/cgi-bin/java-ports.cgi. This software is required on any machine that will be using
eDataFeed.
Note: The Microsoft VM does not support the required Java functionality. The eDataFeed Java client will not run
using the Microsoft Java Virtual Machines.
*Java 1.6.0_0 through 1.6.0_03 include an older version of JAXB and should not be used.
2. Download the Java sample client files labeled as “eDataFeed Example Client 5.0 (Java)” on the eDataFeed home
page [http://www.pjm.com/markets-and-operations/etools/edatafeed.aspx] and unzip them into a local directory
(ex: C:\eDataFeed\SampleClient).
3. Edit the setEnv.cmd file to include your eDataFeed userid and password.
4. You might need to set the maximum JVM heap size to around 256M to avoid “out of memory” error on the client
side. To do this change, you can do the following steps:-
a) Edit the setEnv.cmd to include an environment variable
b) MEM_OPTIONS = -Xms256m –Xmx256m
c) Use the above defined environment variable in the given batch files
d) Java MEM_OPTIONS –cp
5. Execute the provided batch files (*.cmd) to test eDataFeed.
7 Sample Client Installation and Testing (.Net)
1. Install Microsoft Web Services Enhancements (WSE) 3.0. This software is required on any machine that will
be using the eDataFeed .Net sample client. This software can be found at
#522665 Last Updated on 9/7/2017 Page 10 of 22
Customer Documentation: eDataFeed
[http://www.microsoft.com/downloads/details.aspx?familyid=018A09FD-3A74-43C5-8EC1-
8D789091255D&displaylang=en]
2. Download the .Net sample client files labeled as “eDataFeed Example Client 5.0 (.Net)” on the eDataFeed home
page [http://www.pjm.com/markets-and-operations/etools/edatafeed.aspx] and unzip them into a local directory
(ex: C:\eDataFeed\SampleClient).
3. Edit the setEnv.cmd file to include your eDataFeed userid and password.
8 Note for Users of Custom Clients
Users of custom client should be aware that version 5.0 and higher of the application requires a WS-Security header
including the Timestamp WSS Entry. An example of the WS Security header taken from a test request is shown
below:
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-wssecurity-secext-1.0.xsd">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd">
<wsu:Created>2009-02-26T14:21:12.984Z</wsu:Created>
<wsu:Expires>2009-02-26T14:37:52.984Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-
utility-1.0.xsd">
<wsse:Username>XXXXXXX</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-
1.0#PasswordText">XXXXXXX</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
9 Security certificate installation/update (for .Net clients)
1. Browse to the eDataFeed page https://edatafeed5.pjm.com/edatafeed.
2. Double-click on the security (padlock) icon on the web page (different versions of browsers use different symbols
in different locations).
3. Click on the Install Certificate option.
3. Click Next, Select the “Place all certificates in the following store” option
4. Browse to and select the Trusted Root Certification Authorities option and press OK.
5. Press Next and then Finish to install the certificate.
10 Applications Programming Interface
This section describes the programmatic functionality that is currently available. Some eDataFeed data is updated
every five minutes; some is updated hourly; and some is updated daily. So, these requests should not be used more
frequently than needed to keep your data current. Use the methods like getNewestBusDate() and
getNewestAggregateDate() to determine if there is new data, then make the appropriate data requests. The methods
#522665 Last Updated on 9/7/2017 Page 11 of 22
Customer Documentation: eDataFeed
getValidXxx provide the only values that are valid to query on. Since node names may change, this query provides a
query date to aid in identifying the age of your data.
All of the queries that return pricing data also return an error code. These are the valid codes and their meaning: 0 =
valid data, the returned data is valid; 1 = no LMP, the node name or type is good, but there is no LMP data available;
2 = name not valid, the node name requested is not a valid name; 3 = type not valid, the node type requested is not a
valid type.; 4 = data not yet available; 5 = invalid starting record number (starts from 0)
Note: Although date information is stored at PJM in GMT, and, although the SOAP message uses GMT,
the Java proxy will automatically convert the GMT date to your local time zone. One possibility is to use
the java.util.Calendar.getTimeZone to obtain the local time zone, and then use the
TimeZone.getRawOffset to obtain the correction to apply to the Date class to convert back to GMT.
Request Inputs Return2 Description
getNewestBusDate() None dateTime eDataFeed data is only
updated every five minutes.
getNewestAggregateDate()
Use these (relatively fast)
methods to query for the
presence of new data. If
there has been an update to
the buss or aggregate LMP
data, the appropriate data
request can then be
executed.
getNewestBusDALmpDate() None dateTime eDataFeed day-ahead data
is only updated once every
getNewestAggregateDALmpDate()
day. Use these (relatively
fast) methods to query for
the presence of new data. If
there has been an update to
the buss or aggregate day-
ahead LMP data, the
appropriate data request
can then be executed.
getNewestAggregateHourlyLmpDate( None dateTime Use these (relatively fast)
) methods to query for the
presence of new data. If
getNewestAggregateSettlementLmpD
there has been an update to
ate()
the hourly integrated or
settlement LMP data, the
appropriate data request
can then be executed.
2
See the Data Dictionary for more details on these return values.
#522665 Last Updated on 9/7/2017 Page 12 of 22
Customer Documentation: eDataFeed
Request Inputs Return Description
getNewestRegionalInstantaneousLoad None dateTime Use these (relatively fast)
Date() methods to query for the
presence of new data. If
getNewestZonalInstantaneousLoadDa
there has been an update to
te()
the regional or zonal load
data, the appropriate data
request can then be
executed.
getNewestForecastedLoadDate() None dateTime Use this (relatively fast)
method to query for the
presence of new data. If
there has been an update to
the forecast data, the
appropriate data request
can then be executed.
getNewestTransferInterfaceDate() None dateTime Use this (relatively fast)
method to query for the
presence of new data. If
there has been an update to
the transfer interface data,
the appropriate data request
can then be executed.
getNewestConstraintDate() None dateTime Use this (relatively fast)
method to query for the
presence of new data. If
there has been an update to
the constraint data, the
appropriate data request
can then be executed.
getNewestWindDate() None dateTime Use this (relatively fast)
method to query for the
presence of new data. If
there has been an update to
the wind data, the
appropriate data request
can then be executed.
getNewestWindForecastDate() None dateTime Use this (relatively fast)
method to query for the
presence of new data. If
there has been an update to
the wind forecast data, the
appropriate data request
can then be executed.
#522665 Last Updated on 9/7/2017 Page 13 of 22
Customer Documentation: eDataFeed
Request Inputs Return Description
getValidBusNames None NodeDescription Returns an array of all
valid buss names. These
can then be used singly or
in combination to get LMP
for specific pricing nodes.
getValidBusTypes None NodeType Returns an array of all
valid buss types. These can
then be used singly or in
combination to get LMP
for specific pricing nodes.
getValidAggregateNames None NodeDescription Returns an array of all
valid aggregate names.
These can then be used
singly or in combination to
get LMP for specific
pricing nodes.
getValidAggregateTypes None NodeType Returns an array of all
valid aggregate types.
These can then be used
singly or in combination to
get LMP for specific
pricing nodes.
getAllBusLmp None NodeLmp Returns an array of all buss
nodes with current data,
and their corresponding
LMP.
getBusLmpByName Buss NodeLmp Takes an array of valid
Names buss names and returns the
current LMP for each node
specified. Valid nodes with
no LMP contain an error
code of 1. Names that are
not valid contain an error
code of 2. Note: Include all
spaces except of the end.
getBusLmpByType Buss Types NodeLmp Takes an array of valid
buss types and returns the
current LMP for each node
specified. Valid nodes with
no LMP contain an error
code of 1. Types that are
not valid contain an error
code of 3.
#522665 Last Updated on 9/7/2017 Page 14 of 22
Customer Documentation: eDataFeed
Request Inputs Return Description
getAllAggregateLmp None NodeLmp Returns an array of all
aggregate nodes with
current data, and their
corresponding LMP.
getAggregateLmpByName Aggregate NodeLmp Takes an array of valid
Names aggregate names and
returns the current LMP for
each node specified. Valid
nodes with no LMP contain
an error code of 1. Names
that are not valid contain an
error code of 2.
getAggregateLmpByType Aggregate NodeLmp Takes an array of valid
Types aggregate types and returns
the current LMP for each
node specified. Valid nodes
with no LMP contain an
error code of 1. Types that
are not valid contain an
error code of 3.
getAggregateSettlementLmpByName Aggregate NodeLmp Takes an array of valid
Date names aggregate names and date
and returns the LMPs for
Date
each node specified. Valid
nodes with no LMP contain
an error code of 1. Names
that are not valid contain an
error code of 2
getAggregateSettlementLmpByType Aggregate NodeLmp Takes an array of valid
Date Types aggregate types and date
and returns the LMPs for
Date
each node specified. Valid
nodes with no LMP contain
an error code of 1. Types
that are not valid contain an
error code of 3.
getBusDALmpByName Buss NodeLmp Takes an array of valid
Names buss names and returns the
current day-ahead LMP for
each node specified. Valid
nodes with no LMP contain
an error code of 1. Names
that are not valid contain an
error code of 2.
#522665 Last Updated on 9/7/2017 Page 15 of 22
Customer Documentation: eDataFeed
Request Inputs Return Description
getBusDALmpByType Buss Types NodeLmp Takes an array of valid
buss types and returns the
current day-ahead LMPs
for each buss type
specified. Types that are
not valid contain an error
code of 3.
getAllAggregateDALmp None NodeLmp Returns an array of all
aggregate nodes with
current data, and their
corresponding day-ahead
LMP.
getAggregateDALmpByName Aggregate NodeLmp Takes an array of valid
Names aggregate names and
returns the current day-
ahead LMP for each node
specified. Valid nodes with
no LMP contain an error
code of 1. Names that are
not valid contain an error
code of 2.
getAggregateDALmpByType Aggregate NodeLmp Takes an array of valid
Types aggregate types and returns
the current day-ahead LMP
for each node specified.
Valid nodes with no LMP
contain an error code of 1.
Types that are not valid
contain an error code of 3.
getBusDALmpByNameDate Buss NodeLmp Takes an array of valid
Names buss names and date and
returns the current day-
Date ahead LMP for each node
specified. Valid nodes with
no LMP contain an error
code of 1. Names that are
not valid contain an error
code of 2. Note: Include all
spaces except of the end.
#522665 Last Updated on 9/7/2017 Page 16 of 22
Customer Documentation: eDataFeed
Request Inputs Return Description
getBusDALmpByTypeDate Buss NodeLmp Takes an array of valid
Types buss types, and date and
returns the current day-
Date ahead LMPs for each buss
type specified. Types that
are not valid contain an
error code of 3.
getAllAggregateDALmpByDate Date NodeLmp Takes a date and returns
the current day-ahead LMP
for all aggregate nodes.
getAggregateDALmpByNameDate Aggregate NodeLmp Takes an array of valid
Names aggregate names and date
and returns the current day-
Date ahead LMP for each node
specified. Valid nodes with
no LMP contain an error
code of 1. Names that are
not valid contain an error
code of 2.
getAggregateDALmpByTypeDate Aggregate NodeLmp Takes an array of valid
Types aggregate types and date
and returns the current day-
Date
ahead LMP for each node
specified. Valid nodes with
no LMP contain an error
code of 1. Types that are
not valid contain an error
code of 3.
getAllTieFlow None ActualValueData Returns an array of all tie
flow data.
getAllTransferInterface None ActualValueData Returns an array of all
transfer interface data.
getAllAggregateHourlyLmp None NodeLmp Returns an array of all
aggregate nodes with
current data, and their
corresponding hourly LMP.
getAllAggregateSettlementLmp None NodeLmp Returns an array of all
aggregate nodes with
current data, and their
corresponding settlement
LMPs.
#522665 Last Updated on 9/7/2017 Page 17 of 22
Customer Documentation: eDataFeed
Request Inputs Return Description
getAllAggregateDALmp None NodeLmp Returns an array of all
aggregate nodes with
current data, and their
corresponding day-ahead
LMP.
getAllRegionalInstantaneousLoad None ActualValueData Returns an array of all
regional instantaneous load
data.
getAllZonalInstantaneousLoad None ActualValueData Returns an array of all
zonal instantaneous load
data.
getAllForecastedTotalLoad None ActualValueData Returns an array of all
RTO Total forecasted load.
getAllForecastedRegionalLoad None ActualValueData Returns an array of
regional forecasted load
values.
getAllDayAheadLoad None ActualValueData Returns an array of the
Day-Ahead Load forecast
for the RTO and regions.
getAllACE None ActualValueData Returns the current ACE
value for the PJM Control
Area
getAllDispatch None ActualValueData Returns the current
Dispatch Rate for each of
the PJM control zones
getAllLatestConstraints None ConstraintData Returns the latest data on
active constraints
getAllWind None ActualValueData Returns the current wind
generation output for the
PJM Control Area
getAllWindForecast None ActualValueData Returns the latest wind
generation forecast for the
PJM Control Area
getAllAncillary None ActualValueData Returns the latest Ancillary
Services for the PJM
Control Area
#522665 Last Updated on 9/7/2017 Page 18 of 22
Customer Documentation: eDataFeed
Request Inputs Return Description
getNewestAncillaryDate None dateTime Use these (relatively fast)
methods to query for the
presence of new data. If
there has been an update to
the Ancillary Services data,
the appropriate data request
can then be executed.
getNewestAncillarySettlementDate None dateTime Use these (relatively fast)
methods to query for the
presence of new data. If
there has been an update to
the Ancillary Services
Settlement data, the
appropriate data request
can then be executed.
getAllAncillarySettlement None ActualValue Returns an array of all
ancillary services
settlement data points and
their corresponding hourly
values for the latest settled
market day.
getAllAncillarySettlementByDate Date ActualValue Returns an array of all
ancillary services data
points and their
corresponding hourly
values for each hour of the
specified date.
getNewestITScedSolutionDate None dateTime Use these (relatively fast)
methods to query for the
presence of new data. If
there has been an update to
the It Sced Lmp data, the
appropriate data request
can then be executed.
getAllItScedLmps None ActualValue Returns an array of It Sced
Lmp data points for NY
interfaces from the latest
Sced solution.
getAllSolarPowerData None ActualValueData Returns the current solar
generation output for the
PJM Control Area
#522665 Last Updated on 9/7/2017 Page 19 of 22
Customer Documentation: eDataFeed
Request Inputs Return Description
getAllSolarPowerForecast None ActualValueData Returns the latest solar
generation forecast for the
PJM Control Area
getAllSolarPowerBTM None ActualValueData Returns the latest solar
generation BTM for the
PJM Control Area
Note: The above mentioned error codes are returned in the body of the message in the field: errorCodeId. (see data
dictionary entry below for Pricing Node LMP).
11 Data Dictionary
11.1 Pricing Node Description
Contains background information about the LMP nodes
Data Element Description XML Data Type3 Required
NodeDescription The top level - N/A
hierarchy for LMP
node descriptions
pnodeid Pnode ID of the LMP int N/A
node
name name of the LMP string N/A
node
type Type of LMP node string N/A
(gen buss, zone,
interface, etc)
effectiveDate date/time at which dateTime N/A
LMP node becomes
effective or active
terminateDate date/time at which dateTime N/A
LMP node is no
longer effective or has
ended
11.2 Node Type Description
Contains information about the different types of LMP nodes
Data Element Description XML Data Type4 Required
NodeType The top level - N/A
3
#522665 Last Updated on 9/7/2017 Page 20 of 22
Customer Documentation: eDataFeed
hierarchy for
descriptions about the
different LMP node
types
name Name of a LMP node string N/A
type: Zone; Hub;
Load; Generation; etc.
11.3 Pricing Node LMP
Contains pricing information for the LMP nodes
Data Description XML Data Type4 Required
Element/Attribute
NodeLmp Top level hierarchy for - N/A
LMP nodes
name Name of the LMP node string N/A
pnodeid Pnode ID of a LMP int N/A
type Type of LMP node string N/A
timestamp Specifies beginning date dateTime N/A
and time for the LMP
node price
price value of LMP Node $ float N/A
errorCodeId Error code for particular int optional
LMP node. 0 = valid
data, 1 = no LMP for
node, 2 = node name not
found, 3 = node type not
found, 4 = data not yet
available., 5 = invalid
starting record number
#522665 Last Updated on 9/7/2017 Page 21 of 22
Customer Documentation: eDataFeed
11.4 Actual Value Data
Contains information for the Real-time data
Data Description XML Data Type4 Required
Element/Attribute
ActualValueData Top level hierarchy for - N/A
Actual Value Data
name Name string N/A
timestamp Timestamp of Actual dateTime N/A
Value Data
dataSource Data Source string N/A
value Value of Actual Value float N/A
Data
errorCodeId Error codes 0 = valid int optional
data, 1 = no Data , 2 =
actual value data name
not found, 3 = actual
value type not found, 4 =
data not yet available., 5
= invalid starting record
number
11.5 Constraint Data
Contains information for the constraints
Data Description XML Data Type4 Required
Element/Attribute
constraintData Top level hierarchy for - N/A
Constraint Data
facility Id Id of the Facility Long N/A
facility Name of the Facility String N/A
contingencies Contingencies for string N/A
relieving the constraint
shadowPrice Estimated cost of String N/A
removing 1 MW of flow
across the constraint
controllingAction The controlling action for String N/A
the constraint
Timestamp The date and time of the dateTime N/A
data
#522665 Last Updated on 9/7/2017 Page 22 of 22