
Show HN: A free, lightweight static page to get stock quotes using the IEX API - lil_tee
https://github.com/toddwschneider/stocks
======
djhworld
One thing I've taken away from this is vanilla Javascript seems to have come a
long way, or I've just never taken the time to fully appreciate all the
features

For example I didn't even realise JS supported string interpolation

[https://github.com/toddwschneider/stocks/blob/master/index.h...](https://github.com/toddwschneider/stocks/blob/master/index.html#L111)

~~~
mcintyre1994
There's some really good examples of this in Wes Bos' (free) javascript30.com
course - 30 short videos all using vanilla Javascript and showing some really
neat new features.

Another really awesome new feature which I can't remember if it's in that
course or not, is fetch - super simple AJAX API using promises. It's also used
in this app:
[https://github.com/toddwschneider/stocks/blob/master/index.h...](https://github.com/toddwschneider/stocks/blob/master/index.html#L151)

~~~
jetti
I didn't know about fetch, that's pretty neat. Unfortunately for me, it isn't
supported on IE: [https://developer.mozilla.org/en-
US/docs/Web/API/Fetch_API](https://developer.mozilla.org/en-
US/docs/Web/API/Fetch_API)

~~~
RussianCow
Fortunately, there is a very good polyfill[0] for it.

[0]: [https://github.com/github/fetch](https://github.com/github/fetch)

------
meredydd
Neat! I used this API to live-code a mini-portfolio-manager SaaS a couple of
months ago: [https://anvil.works/blog/live-coding-stock-
portfolio](https://anvil.works/blog/live-coding-stock-portfolio)

It let you pick the stocks yourself, and showed you historical graphs too. It
was a bit more complex than this, but still only took an hour.

------
dxxvi
There's definitely something I can learn from this. By the way, Robinhood API
also gives you quotes for free
[https://api.robinhood.com/quotes/?symbols=AMD,TSLA](https://api.robinhood.com/quotes/?symbols=AMD,TSLA)

~~~
foobaw
I believe Robinhood doesn't have official API support so use it with caution.

~~~
rl3
According to their site, they'll have an official API in the "near future",
and hopefully one that allows trades to be placed. Granted, they've said that
for almost two years now. I fully expect to die of old age before it's
available.

[https://support.robinhood.com/hc/en-
us/articles/210216823-Ro...](https://support.robinhood.com/hc/en-
us/articles/210216823-Robinhood-API-Integrations)

------
janvidar
What makes this a "static page"? It's all non-interactive javascript.

~~~
matte_black
Static doesn’t mean no JavaScript or interaction. In fact many SPAs are just
static pages served out of S3 and connecting directly to some API server to
fetch data.

A static page means no processing is done on a web server to serve you the
rendered content. This saves you time and money, and ensures scalability for
any amount of traffic.

~~~
megous
There are different meanings. Back in the day there was DHTML, where D stands
for dynamic. So static page 10 years ago would mean no javascript.

------
brandur
This is great. I love the simple, succinct interface — I wish real financial
companies like my trading account and my bank had even half this much sense
when it comes to pragmatic design.

A few notes from taking a look at the code:

* I've very much started doing the same thing in my projects of just using modern JavaScript constructs like fetch and arrow functions without a transpiler. IE is never going to support any of them, but I've accepted that. Caniuse.com ranks most of them at 85%+ supported.

* It's neat to see that the IEX API supports batch requests (as opposed to having to pull one stock at a time) in its API which makes it possible to implement the project efficiently and in a way that doesn't have to store state.

* Nice work building it to support large users as well. A lot of installations probably won't have more than 100 stocks, but it'll break up requests into multiple batches of <= 100 if they do.

------
mmanfrin
I had not realized Google killed Google Finance until this post -- the search
replacement is abysmal.

------
indescions_2018
Looks good! IEX API also has experimental support for websockets ;)

------
roadbeats
I'm not into stocks, but like the way you coded it. We don't see this sort of
good examples that combines the old school simplicity and new JS / DOM API
features.

------
vigneshv_psg
hmm, while this is cool i am not sure if it is a full-fledged replacement for
the Google Finance "portfolios" feature. That lets you add the number of
stocks you own for each symbol and shows you an aggregate gain/loss per day,
etc. That was the main reason i was using google finance.

I have now transitioned to my own Google Sheet with the "=GOOGLEFINANCE()"
function for getting the stock data. Works pretty well.

~~~
mark212
I'm no JS expert by any stretch but it seems pretty simple to add in code for
that here. It'd be a chore to hard-code a big portfolio or one that trades
frequently, though.

------
koolba
Very cool!

As everything is done client side how about adding some parsing of the URL
#hash/?query to encode data of a portfolio? That way you could have a single
statically hosted version serving multiple people. Could even have a portfolio
builder page that generates the encoded URL.

~~~
sammyd56
Here you go! No need to fork :)

[https://samdobson.github.io/stocks/?Banks=GS,MS,JPM&Tech=AAP...](https://samdobson.github.io/stocks/?Banks=GS,MS,JPM&Tech=AAPL,GOOGL,MSFT,AMZN)

~~~
lil_tee
Thanks, agreed this is a good idea and I added query param support here:
[https://github.com/toddwschneider/stocks/pull/4](https://github.com/toddwschneider/stocks/pull/4)

------
IloveHN84
But if a website uses JavaScript, how can you say it is static? IMHO, static
is only Html+css...

~~~
gbba
In this context they mean you won't need anything more than a browser or basic
HTTP server.

------
mikeokner
Really cool! I love simple solutions like this.

------
ape4
Looks like it gets an html page from
[https://iextrading.com/apps/stocks/#/<stock>](https://iextrading.com/apps/stocks/#/<stock>)
then scrapes it. Not really an API. Edit: ok, I'm wrong.

~~~
samfisher83
It uses the iex api. I have used the api before its really good.

Here is the code author uses to get data:

    
    
          const BASE_URL = 'https://api.iextrading.com/1.0/stock/market/batch';
    
            let url = `${BASE_URL}?types=quote&symbols=${symbols.join(',')}&filter=${filters.join(',')}`;

------
craftyguy
I would like to find something like this that is usable by Libreoffice Calc.

~~~
Cthulhu_
It looks like a simple html table, I think LibreOffice might be able to parse
that. Else, it should be relatively trivial to change the output to e.g. csv
which can be imported.

As for an alternative, and I don't know the options here, but maybe a plugin
could be made that pulls the data into Calc itself.

------
djhworld
The demo site is cool, wonder if IEX will appreciate the thundering herd from
HN though?

