Code Monkey home page Code Monkey logo

etfdb-api's Introduction

ETFdb.com API (React, Vue, Angular, Node.js)

  • Fetches data of all 3114 ETFs listed on ETFdb.com
  • Indicators: returns (YTD, 1-week, etc.), AUM, expense ratio, dividend yield, 3-month avg. volume, price, etc.
  • Holdings of individual ETFs
  • Supports client-side (React, React Native, Vue, Angular, Cordova, Ionic, etc.), and server-side (Node.js)

Getting Started

  • npm install etfdb-api

Examples

Node.js

const etfdb = require('etfdb-api');

// list all ETFs, sorted by year-to-date return, descending sort direction
etfdb
  .listEtfs((perPage = 50), (page = 1), (sort = 'ytd'), (order = 'desc'))
  .then(result => {
    console.log('Total ETFs:', result.meta.total_records);
    result.data.forEach(etf => console.log(etf.symbol.text, etf.ytd));
  });

// show first 15 holdings of TQQQ, sorted by weighting (DESC)
etfdb.listHoldings('TQQQ').then(holdings => console.log(holdings));

// page 3 of TQQQ holdings
etfdb.listHoldings('TQQQ', 3).then(holdings => console.log(holdings));

React

Live Demo: https://codesandbox.io/s/mpxy95mvx

import api from 'etfdb-api';

class Etfdb extends React.Component {
  componentDidMount() {
    api.listHoldings('VGT').then(data => this.setState({ data }));
  }

  render() {
    // ...
    return <pre>{JSON.stringify(this.state.data, null, 1)}</pre>;
  }
}

JSON Response - listEtfs()

{
    "meta": {
        "page": 2,
        "per_page": 25,
        "sort_direction": "desc",
        "sort_by": "assets",
        "order": {
            "assets": "desc"
        },
        "total_pages": 90,
        "total_records": 2245,
        "filter": {}
    },
    "data": [
        {
            "symbol": {
                "type": "link",
                "text": "XLF",
                "url": "/etf/XLF/"
            },
            "name": {
                "type": "link",
                "text": "Financial Select Sector SPDR Fund",
                "url": "/etf/XLF/"
            },
            "mobile_title": "XLF - Financial Select Sector SPDR Fund",
            "price": "$24.00",
            "assets": "$23,740.88",
            "average_volume": "73,474,031",
            "ytd": "-12.95%",
            "overall_rating": {
                "type": "restricted",
                "url": "/members/join/"
            },
            "asset_class": "Equity"
        },
        {
            "symbol": {
                "type": "link",
                "text": "VO",
                "url": "/etf/VO/"
            },
            "name": {
                "type": "link",
                "text": "Vanguard Mid-Cap Index ETF",
                "url": "/etf/VO/"
            },
            "mobile_title": "VO - Vanguard Mid-Cap Index ETF",
            "price": "$141.39",
            "assets": "$21,782.58",
            "average_volume": "571,031",
            "ytd": "-7.61%",
            "overall_rating": {
                "type": "restricted",
                "url": "/members/join/"
            },
            "asset_class": "Equity"
        },
        {
            ...
        }
    ]
}

Raw API Query

Use Postman or curl.

URL: https://etfdb.com/api/screener/

Method: POST

Payload: see below

Headers:

  • Content-Type: application/json
  • User-Agent: Your User Agent

Payload Examples

Sort by Year to Date, order direction DESC

{
  "page": 2,
  "per_page": 25,
  "sort_by": "ytd",
  "sort_direction": "desc",
  "only": ["meta", "data"]
}

Show Returns

{
  "page": 2,
  "only": ["meta", "data"],
  "tab": "returns"
}

Fund Flows

"tab": "fund-flows"

Expenses

"tab": "returns"

Dividends

"tab": "dividends"

Holdings

"tab": "holdings"

etfdb-api's People

Contributors

janlukasschroeder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

etfdb-api's Issues

etfd.listHoldings() not working

Neither on the sandbox nor in my own application is the listHoldings() request working. I get an application error.
listETFs() meanwhile is working.
Any ideas?

Raw API Query

I only get page 1. Is there any trick or I just miss authentication?

curl -d '{"only":["meta","data",null]}' -H "Content-Type: application/json" -H "page: 2" -X POST https://etfdb.com/api/screener/
curl -d '{"only":["meta","data",null]}' -H "Content-Type: application/json" -H "per_page: 100" -X POST https://etfdb.com/api/screener/

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.