Skip to content

YahooOptions not working properly #923

Open
@tachyon-ops

Description

@tachyon-ops

So, I have tried to request options and calls using

import pandas_datareader.data as web

FB = web.YahooOptions('FB')
print(FB.expiry_dates)

which yields

pandas_datareader._utils.RemoteDataError: Unable to read URL: https://query1.finance.yahoo.com/v7/finance/options/FB
Response Text:
b'Forbidden'

Now, accessing that URL from the browser works fine. So I then tried to do a simple 'requests' get. It turned out:

response = requests.get("https://query1.finance.yahoo.com/v7/finance/options/FB")
print(response.text)

yields

Forbidden

But if I add headers

headers = {'User-Agent': 'Firefox'}
response = requests.get(
    "https://query1.finance.yahoo.com/v7/finance/options/FB", headers=headers).json()

I get the proper response.
Calls work the same...

Therefore, I think Yahoo is constraining its api no?

Activity

Victorhpinheiro

Victorhpinheiro commented on Sep 20, 2022

@Victorhpinheiro

Hello,

I had the same problem. Apparently, the API is refusing requests without headers.

My workaround was to add the headers directly to the object.

Also, the ticket FB is returning blank because it got change to 'META'

FB = web.YahooOptions('FB')
FB.headers = {'User-Agent': 'Firefox'}
print(FB.expiry_dates)

It would be nice to have a default header for that request IMO.

Hope it helps :)

kamel003

kamel003 commented on Feb 23, 2023

@kamel003

change FB by META

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @tachyon-ops@Victorhpinheiro@kamel003

      Issue actions

        YahooOptions not working properly · Issue #923 · pydata/pandas-datareader