12 votos

¿Dónde puedo obtener una lista de todos los símbolos de acciones de Yahoo Finance?

Recuerdo haber visto eso en algún lugar, ya no puedo encontrarlo. ¿Alguien sabe cómo puedo obtener toda la lista de acciones en Yahoo finance?

O incluso todas las acciones estadounidenses, tal vez Russell 1000/2000/3000...

0 votos

Si deseas datos actualizados diariamente, puede que quieras revisar esta API rapidapi.com/logicione/api/…

1voto

richzilla Puntos 106

Este es el mejor enlace que he encontrado

Mejor enlace que he encontrado

0 votos

Eso es del 2017.

1voto

user61381 Puntos 22

Puedes intentar esto - baja 400000 tickers. https://github.com/mlapenna7/yh_symbol_universe

0voto

steve Puntos 11

YQL parece fallar en consultas con algo como '%AM%' y tampoco hay otra forma de obtener la lista de todos los símbolos de acciones. pero creo que esto puede hacer el truco..

select * from yahoo.finance.industry where id in (1,2,3....260)

esto te dará una lista de empresas y sus símbolos. empieza con select * from yahoo.finance.industry where id in (112) y ve si funciona.

0 votos

¿Puedes darme un ejemplo de cómo usar YQL? ¿es con un enlace de algún tipo?

0 votos

0voto

Jack Frost Puntos 11

Para acciones comunes, puedes encontrar la lista aquí.

Hay 69k acciones de 49 intercambios.

Además, estos tickers cumplen con el estándar de Yahoo Finance.

0voto

user57137 Puntos 42

Aquí está el código para extraer todos los símbolos presentes en ese filtro de yahoo-finance. Puedes simplemente crear un filtro aquí

He modificado un poco el código porque yahoo-finance devolvía una respuesta 404 vacía al trabajar con el módulo de solicitudes de python. Similar a este problema / solución

Aquí está el código completo funcionando.

import requests
import json
import time

# Modificar BASE_URL según corresponda
BASE_URL = "https://finance.yahoo.com/screener/unsaved/79fce2f7-82fe-49ec-8098-88add84138ec?dependentField=sector&dependentValues=&offset=OFFSET&count=COUNT"

cnt = 100
offset = 0
flag = 1
tempo = 10
name_to_symbol = []
total = 0

while flag > 0:
    url = BASE_URL.replace("OFFSET", str(offset))
    url = url.replace("COUNT",str(cnt))
    offset += cnt

    response = requests.get(url, headers={'User-Agent': 'Custom'})
    s = str(response.text)
    jsonArrayStart = s.find('"results":{"rows"') + 18
    jsonArrayEnd = jsonArrayStart + 1

    while s[jsonArrayEnd] != ']':
        jsonArrayEnd += 1

    jsonArrayString = s[jsonArrayStart: jsonArrayEnd+1]
    jsonArray = json.loads(jsonArrayString)
    if len(jsonArray) != cnt:
        flag = 0

    total += len(jsonArray)
    for obj in jsonArray:
        if 'longName' in obj:
            name_to_symbol.append([obj['symbol'], obj['longName']])
        elif 'shortName' in obj:
            name_to_symbol.append([obj['symbol'], obj['shortName']])
        else:
            name_to_symbol.append([obj['symbol'], obj['symbol']])
    time.sleep(10)

name_to_symbol

P.D - Disculpa por la tardanza en responder. Además, he rechazado todas las ediciones ya que eran irrelevantes y he arreglado el código ahora. En el futuro te recomendaría comentar en la publicación en lugar de sugerir una edición incorrecta

Espero que esto ayude

0 votos

Gracias por la solución. Antes funcionaba, pero ahora arroja un error. ¿Puedes arreglarlo por favor? Revisé y el JSON que devuelve ahora ya no es válido.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X