2017 © Pedro Peláez
 

library yahoo-finance-api

PHP library for accessing Yahoo Finance data

image

scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  • Thursday, April 5, 2018
  • by Scheb
  • Repository
  • 25 Watchers
  • 110 Stars
  • 16,311 Installations
  • PHP
  • 3 Dependents
  • 0 Suggesters
  • 30 Forks
  • 0 Open issues
  • 14 Versions
  • 7 % Grown

The README.md

scheb/yahoo-finance-api

This is a PHP client for Yahoo Finance API., (*1)

Build Status Code Coverage Latest Stable Version Total Downloads License, (*2)

Logo, (*3)

Since YQL APIs have been discontinued in November 2017, this client is using non-official API endpoints for quotes, search and historical data., (*4)

[!WARNING] These non-official APIs cannot be assumed stable and might break any time. Also, you might violate Yahoo's terms of service. So use them at your own risk., (*5)

Installation

Download via Composer:, (*6)

composer require scheb/yahoo-finance-api

Alternatively, you can also add the package directly to composer.json:, (*7)

{
    "require": {
        "scheb/yahoo-finance-api": "^5"
    }
}

and then tell Composer to install the package:, (*8)

composer update scheb/yahoo-finance-api

Usage

use Scheb\YahooFinanceApi\ApiClient;
use Scheb\YahooFinanceApi\ApiClientFactory;
use GuzzleHttp\Client;

// Create a new client from the factory
$client = ApiClientFactory::createApiClient();

// Or configure with options
$client = ApiClientFactory::createApiClient(
    clientOptions: [/* ... */], // Guzzle client options
    retries: 3,
    retryDelay: 1000, // milliseconds
);

// Returns an array of Scheb\YahooFinanceApi\Results\SearchResult
$searchResult = $client->search("Apple");

// Returns an array of Scheb\YahooFinanceApi\Results\HistoricalData
$historicalData = $client->getHistoricalQuoteData(
    "AAPL",
    ApiClient::INTERVAL_1_DAY,
    new \DateTime("-14 days"),
    new \DateTime("today")
);

// Retrieve dividends history, returns an array of Scheb\YahooFinanceApi\Results\DividendData
$dividendData = $client->getHistoricalDividendData(
    "AAPL",
    new \DateTime("-5 years"),
    new \DateTime("today")
);

// Retrieve stock split history, returns an array of Scheb\YahooFinanceApi\Results\SplitData
$splitData = $client->getHistoricalSplitData(
    "AAPL",
    new \DateTime("-5 years"),
    new \DateTime("today")
);

// Returns Scheb\YahooFinanceApi\Results\Quote
$exchangeRate = $client->getExchangeRate("USD", "EUR");

// Returns an array of Scheb\YahooFinanceApi\Results\Quote
$exchangeRates = $client->getExchangeRates([
    ["USD", "EUR"],
    ["EUR", "USD"],
]);

// Returns Scheb\YahooFinanceApi\Results\Quote
$quote = $client->getQuote("AAPL");

// Returns an array of Scheb\YahooFinanceApi\Results\Quote
$quotes = $client->getQuotes(["AAPL", "GOOG"]);

// Returns an array of Scheb\YahooFinanceApi\Results\OptionChain
$optionChain = $client->getOptionChain("AAPL");
$optionChain = $client->getOptionChain("AAPL", new \DateTime("2021-01-01"));

Configuration

User Agent

You can customize the User-Agent header by passing it in the Guzzle client options:, (*9)

$guzzleClientOptions = ['headers' => ['User-Agent' => 'MyApp/1.0']];
$client = ApiClientFactory::createApiClient($guzzleClientOptions);

Using curl-impersonate

This library supports curl-impersonate to mimic real browser behavior. When using curl-impersonate, the library automatically removes the default User-Agent header to let curl-impersonate handle it., (*10)

To use curl-impersonate:, (*11)

  1. Install curl-impersonate on your system
  2. When execution your application, set the required environment variables:
export LD_PRELOAD=/path/to/curl-impersonate/libcurl-impersonate.so
export CURL_IMPERSONATE=chrome136  # or another browser version
  1. Create your API client normally - no additional configuration needed:
$client = ApiClientFactory::createApiClient();

The library will automatically detect the CURL_IMPERSONATE environment variable and configure the HTTP client accordingly., (*12)

Retry Feature

The library includes a built-in retry mechanism that can automatically retry failed requests. Configure it when creating the client:, (*13)

$client = ApiClientFactory::createApiClient(
    retries: 3,        // Number of retry attempts (default: 0)
    retryDelay: 1000,  // Delay between retries in milliseconds (default: 0)
);

When a request fails, the library will:, (*14)

  1. Wait for the specified delay
  2. Renew the session context (fetch new set of cookies and crumb value)
  3. Retry the request
  4. Repeat until success or max retries reached

Context Cache Feature

The library supports caching session contexts (cookies and crumb value) to improve performance and reduce HTTP requests. This is especially useful in high-traffic applications or when making multiple requests., (*15)

To use caching, you need a PSR-6 cache implementation, e.g. you could use symfony/cache:, (*16)

composer require symfony/cache

Then configure the cache. In this example, a simple file-based cache is used:, (*17)

use Scheb\YahooFinanceApi\ApiClientFactory;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;

// File-based cache from symfony/cache
$cache = new FilesystemAdapter();

// Create API client with caching
$client = ApiClientFactory::createApiClient(
    cache: $cache,              // PSR-6 cache implementation
    cacheTtl: 3600,             // Cache TTL in seconds (optional, default: 3600)
    cacheKey: 'my_cache_key'    // Custom cache key (optional)
);

Version Guidance

Version Status PHP Version
1.x EOL >= 5.3.0
2.x EOL >= 5.6.0
3.x EOL >= 5.6.0
4.x EOL >= 7.1.3
5.x Maintained >= 8.1.0

License

This library is available under the MIT license., (*18)

Contributing

Want to contribute to this project? See CONTRIBUTING.md., (*19)

Support Me

I'm developing this library since 2014. I love to hear from people using it, giving me the motivation to keep working on my open source projects., (*20)

If you want to let me know you're finding it useful, please consider giving it a star ⭐ on GitHub., (*21)

If you love my work and want to say thank you, you can help me out for a beer 🍻️ via PayPal., (*22)

The Versions

05/04 2018

dev-master

9999999-dev https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

 

The Development Requires

by Christian Scheb

api finance yahoo stock

05/04 2018

v3.1.0

3.1.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

 

The Development Requires

by Christian Scheb

api finance yahoo stock

15/11 2017

2.x-dev

2.9999999.9999999.9999999-dev https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

 

The Development Requires

by Christian Scheb

api finance yahoo stock

15/11 2017

v3.0.0

3.0.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

 

The Development Requires

by Christian Scheb

api finance yahoo stock

31/08 2017

v2.1.0

2.1.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

 

The Development Requires

by Christian Scheb

api finance yahoo stock

29/08 2017

dev-serializable

dev-serializable https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

 

The Development Requires

by Christian Scheb

api finance yahoo stock

27/08 2017

v2.0.1

2.0.1.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

 

The Development Requires

by Christian Scheb

api finance yahoo stock

10/08 2017

v2.0.0

2.0.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

 

The Development Requires

by Christian Scheb

api finance yahoo stock

03/08 2017

1.x-dev

1.9999999.9999999.9999999-dev https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Christian Scheb

api finance yahoo stock

15/03 2017

v1.4.0

1.4.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Christian Scheb

api finance yahoo stock

13/02 2017

v1.3.0

1.3.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Christian Scheb

api finance yahoo stock

29/09 2015

v1.2.0

1.2.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Christian Scheb

api finance yahoo stock

19/01 2014

v1.1.0

1.1.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Christian Scheb

api finance yahoo stock

18/01 2014

v1.0.0

1.0.0.0 https://github.com/scheb/yahoo-finance-api

PHP library for accessing Yahoo Finance data

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Christian Scheb

api finance yahoo stock