Open
Description
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?
Metadata
Metadata
Assignees
Labels
No labels
Activity
Victorhpinheiro commentedon Sep 20, 2022
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'
It would be nice to have a default header for that request IMO.
Hope it helps :)
kamel003 commentedon Feb 23, 2023
change FB by META