PHP Stock Market API

Here’s a quick API script I put together to help monitor my stocks. It’s a PHP Stock Market API that uses the Yahoo! Finance API and allows you to retrieve up to 20 current data points for a particular symbol. It’s simple to use and doesn’t require any knowledge on how to implement or use the Yahoo! Finance API.

Looking to grab the latest stock market data? There’s a surprising lack of stock market APIs out there and even fewer that work consistently or affordable. Never fear, the PHP Stock Market API is here!

The PHP Stock Market API is a simple PHP class that uses the Yahoo! Finance API allowing you to retrieve up to 20 current data points for a particular symbol. It’s simple to implement and doesn’t require you to learn how to use the Yahoo! API.

UPDATE (Nov. 28, 2014, v1.3): getData now allows an array to pull multiple stocks at once (thanks @d3vit).
UPDATE (Jan. 27, 2014, v1.2): You can now also retrieve historical data (open, high, low, close, volume & adjusted close).

Download Now (Version 1.3) Fork on GitHub


PHP Stock Market API Usage

With just a few lines of code, you can easily retrieve 20 current data points. Here’s how it works:

<?php
require_once('class.stockMarketAPI.php');
?>

<h1>Current Stock Information for AAPL</h1>

<?php
$StockMarketAPI = new StockMarketAPI;
$StockMarketAPI->symbol = 'AAPL';
?>
<pre><?php print_r($StockMarketAPI->getData());?></pre>

<?php
$start = '01-01-2013';
$end = '01-07-2013';
?>
<h1>Historical Stock Information for AAPL (<?php echo $start ?> - <?php echo $end ?>)</h1>
<?php
$StockMarketAPI = new StockMarketAPI;
$StockMarketAPI->symbol = 'AAPL';
$StockMarketAPI->history = array(
  'start'    => $start,
  'end'    => $end,
  'interval' => 'd' // Daily
);
?>
<pre><?php print_r($StockMarketAPI->getData());?></pre>

<hr>

<h1>Stock Information for AAPL, MSFT, GOOGL</h1>
<?php
$StockMarketAPI = new StockMarketAPI;
$StockMarketAPI->symbol = array('AAPL', 'MSFT', 'GOOGL');
?>
<pre><?php print_r($StockMarketAPI->getData());?></pre>

Author: Ben Marshall

Red Bull Addict, Self-Proclaimed Grill Master, Entrepreneur, Workaholic, Front End Engineer, SEO/SM Strategist, Web Developer, Blogger

17 thoughts on “PHP Stock Market API”

  1. The code actually is broken currently when I attempt to run it. Quick fix is to move

    $start = '2013-1-1';
    $end = '2013-12-31';

    into the actual <?php block instead of having it in it's own separate blocks underneat the . The strange thing is, the code has the , then creates variables for $start and $end, but doesn’t actually display it there. Not sure why it was written like that in the first place. All of this is in the index.php file, and after making that change, the code worked great. Thank you!

  2. Hey Ben,

    This is pretty cool but when I try to save the historical data into a variable; ie: $myhistoricaldata = $StockMarketAPI->getData(), the whole array get printed to the page rather than being saved to my variable. I’m not sure what’s going on.

    My code would be as follows:

    // Get daily historical data for AAPL
    $StockMarketAPI = new StockMarketAPI;
    $StockMarketAPI->symbol = 'AAPL';
    $StockMarketAPI->history = array(
    'start' => '2013-1-1', // yyyy-m-d
    'end' => '2013-12-31', // yyyy-m-d
    'interval' => 'w' // weekly
    );
    $myhistoricaldata = $StockMarketAPI->getData());

    Any thoughts? Thanks.

  3. Since Yahoo Finance told us that they will drop the realtime update for the gold price, is it possible to use Kitco for source instead?
    I don’t know is it possible to use it with this API without huge modification.
    Regards

      1. That might Gold Feed script could be old information… It looks like they’re trying to sell a service now and finding the actual script is eluding me. I recommend the XML Charts free (or paid) service, providing you follow their terms of use. They provide precious and industrial metal feeds in several currencies.

  4. Still have the problem with Start/ End Date when using historical data. If I set for symbol = ‘AAPL’:
    $start = ’01-01-2013′;
    $end = ’31-12-2013′;
    I get historical data from 01-01-2013 until now, which is 16-07-2016….Did not find a way to fix this….:-(

    Another question:
    Is there any way of using this API not only for historical stock, but also for historical currency quotes like ‘EURUSD=X’ or commodities like ‘NG=F’ which would be natural gas. See list of commodities/ currencies at yahoo:
    http://finance.yahoo.com/commodities?ltr=1
    http://finance.yahoo.com/currencies?ltr=1

    That would really be a big thing….I really would appreciate using this API like that. šŸ™‚
    Thanks for support and help.
    Fred

  5. Hi Ben, thanks for this! Working great for me. I can’t seem to find any documentation on changing the interval from “daily” (as you have it) to, say, hourly, or minutes. I’m trying to get the current, or previous day’s intraday data for a stock.

    Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *