Hacker News new | comments | show | ask | jobs | submit login
Show HN: Coinmarketcap replacement with free JSON API (cryptomarketplot.com)
107 points by cryptoplot 4 days ago | hide | past | web | favorite | 81 comments

Work in progress!

The linked graph are in PDF, and should update every hour soon.

The website is made to be fast to read, and give essential information. It should load very fast. No ads. No metrics. No bullshit.

The JSON API is similar to the deprecated CMC API. But no need of API key and you get not just the last price, but bid and ask.

Feedback is much appreciated!

Cool site! but:

Get an SSL certificate so you serve over https https://letsencrypt.org/getting-started/

"But I don't need a SSL...." Here's Why Your Static Website Needs HTTPS https://www.troyhunt.com/heres-why-your-static-website-needs...

Looks like SSL is supported, they just don't auto upgrade requests.

During tests, we found it was better to let people chose.

You can use whatever method you feel more comfortable with.

Sometime usability and security go in different way. We could do HSTS but if you took time to type http:// maybe you really want http not https

Why is it better to let people choose? That implies there is a downside to https:// or a reason some people prefer http:// -- can you elaborate?

If you type just the domain name you get http:// by default, which, in my experience, is how most people type in site URLs.

People have their reasons, we respect that. But a default to https, why not? It seems reasonable to me.

I am not sure on how to get https:// by default while still supporting http:// for people who prefer it. It may take some advanced 302 redirect.

We will investigate and see what we can do there. Suggestions are much appreciated.

I'm still very unclear on a legitimate use case for this, and personally wouldn't do it until I had a good reason.

That said, a couple ideas on how to implement:

* Use an alternate domain, eg `insecure.domain.com`

* Use an alternate path prefix, eg `domain.com/insecure/` -- your app would have to be able to handle this

* Use a parameter that sets a cookie that your load balancer/reverse proxy can understand, eg, `http://domain.com/?https=false`, and will prevent redirect -- definitely the most complex from the proxy point-of-view, but means the URL (other than the scheme) is consistent for both types of user

I sometimes parse web data with uC based devices that are not capable of doing https with the memory space available. I appreciate the ability to use http when I need to.

I use http from embedded devices that cannot do https due to memory constraints. Http access is appreciated for this use case.

But.... Do you guys have a business model that is going to keep you around long enough for me to bother hardcoding your api into embedded devices? I build things that connect real world actions to cryptocurrency markets, diverting power, metering resource consumption, etc.

Please get in touch by email if you need something more than the free API.

For your embedded devices, we can make something special just for you

I use http from embedded devices that cannot do https due to memory constraints. Http access is appreciated for this use case.

But.... Do you guys have a business model that is going to keep you around long enough for me to bother hardcoding your api into embedded devices? I build things that connect real world actions to cryptocurrency markets, diverting power, metering resource consumption, etc.

We plan to remain online for a long long time

And if you make embedded devices using our API, maybe you need more than the free API?

We sell access based on subscription for 0.1 BCH per month.

Or maybe you need our 'special services'?

From the FAQ: "I'm wealthy. I have very specific crazy needs!"

"For the right price, the above rules may not apply to you. Right price means at least 1 BTC. If you can pay that, we can do many crazy things just for you"

Oops wrong place, sorry.

No wrong question :-)

Please get in touch by email if you need something special.

If you have hard constraints, we can provide you with a special API returning only the value(s) you need so you do not even have to parse anything.

GraphQL :)

Not attempting to be snide, this sentiment echoes exactly what GraphQL solves.

Co author here - I make the API and the backend.

The numbers come from a large sample of exchanges, with several million new datapoint added every day to cover every crypto we find important.

It is more of a hobby for me, but I hope you like it!

Hi 1996 - I used to work at [Cryptopia](https://www.cryptopia.co.nz/), a exchange fairly well known for listing low marketcap coins.

If you ever decide you want to expand to more than top 50 coins, then I'd love to help in any way I can - particularly with their API - feel free to email me: "james" at $my_hackernews_username ".nz"

Hi Scaur!

We are on #1 page!! Big surprise !! Now I have to reply to all questions but HN tell me 'you are posting too much'

I must fix bugs first, but I will be happy to email you!! I love cryptopia and it's approach!! Our email is in the faq: cryptomarketplot@protonmail.com

There is more on the website than the eye can see now. We will unveil new features soon.

Expanding beyond top #50 is something we want. We want to support more coins, and there is work in progress on that.

But after noticing what coins it will expose, we almost changed our mind and decide to just be top20.

After hard thinking, we decided to spend much more effort on methods to flags suspicious coins. Because there are many small promising coins that can benefit from exposure.

It is almost there. More algorithms to make!

The real work is to spot the anomalies, so your averages don't deviate from real values and I think that's what makes Coinmarketcap reliable.

If you say you made it for hobby, how are you trying to replace Coinmarketcap?

1996 is rate limited on the replies, so I'll answer: Until it brings in more money than it costs to make, it is a hobby.

I hope we grow and replace coinmarketcap. But that will take hard work, and lots of luck.

We have algorithms to spot anomalies. We want to offer extremely reliable data.

>The numbers come from a large sample of exchanges

Disclose the method and source

"average price on last calendar"

Average is a bad function to minimize error between expected values and actual values. Use median or median of the 5%-95% percentiles.

Indeed, the median works better in general, even on degenerate distributions. The Cauchy distributions has no defined mean, but still has a median.

We need to upgrade the FAQ to be more specific with the methods we use.

To be quick: The price come from many exchange. We exclude suspicious points. Then we do aggregation function like the average.

Averaging may not technically be the best method, but it is simple, and it has a wide support. And with the number of data points we have, we assume the Law of Large Number apply.

Still it could be interesting to use the median. I need to think more about it.

>we assume the Law of Large Number apply

Null hypothesis mandates you make no such assumption. Even if you did, a gaussian distribution assumes variable independence which markets are most certainly not. Even still if the variables were independent, you surely don't have enough samples of prices to report an accurate mean.

Agreed. We should not make such assumptions, because the number of exchanges is still quite low.

But you would be surprised to know how many samples we have at any moment!

I'd love historical API access!

We are split on that.

We would like to offer historical API to paying customers. We have a lot of data.

But we want to retain customers. We do not want them to leave after dumping our data. At keep keep paying us :-)

So we came to the conclusion: you get data from when you start to pay us, and we add a little extra (last 2 months) but no more. It is in the FAQ.

Historical API, we must think more about that.

This is really cool, great work!

I am one of the developers of Blockmodo. It offer realtime data streamed directly from the exchanges via a WebSocket API. Alternatively, you can also go through our REST API as well to get this data.

Data can be streamed aggregated or if you choose, you can also stream and poll the data on a per-coin basis. For example, if you want the aggregate price of Bitcoin you can do that but if you want the price streamed of Bitcoin for BTC/USD for Bitfinex, you can do that as well.

In addition to the price, we offer full streaming and REST data on:

- Realtime news on each coin. Our backend also detects bot generated articles and excludes those.

- Realtime community posts across different sub-reddits, forums, etc

- Realtime social posts from the developers of each coin (twitter, etc).

- Realtime code checkins from the developers across multiple repos segmented by the coin (github, etc).

- Full coin profiles (name, website, telegram urls, etc).

We do this on over 2700+ coins for developers and terminal makers across 100+ exchanges. You can explore the documentation here:


How can I see it in action?

You can see it in action here by visiting our front page:


Another terminal app that is connected to the network is CoinHub for iOS which you can check out here:


I don't think you should be allowed to make a one-liner comment "This is really cool!" and then follow it up with a 15 line copy-pasted sales pitch for a potentially competing product.

That being said, it is refreshing to see a barebones data site by geeks for geeks! I'll following up to find out what they have behind the client subscription.

I think it should be allowed, just not encouraged

All I could see on this website were the tweets and things I don't really care about. We seem to have very different goals.

But after talking, I'm curious to see what kind of market data they have. I asked for a small sample.

I am still waiting for reply from electic.

Huh, thanks?

But that's a bit different from what we are doing.

We concentrate on hard numbers and privacy. You seem to focus on news and community. And it seems to me your API requires a login. Also, your homepage looks nice, but I don't find on it the information I want - cold hard number, graphs! However, I find plenty of stuff I do not want - like twits?? I don't want twitter or anyone else to track me.

Your site looks nice, but I think we have very different goals.

Different experiences I guess. We do not require a login. You can use the API without a key.

We actually started of with the price. Our goal was to be as low latency as possible. We have all the stats like price, histograms, market cap, etc in there. Most of our infra is keeping number stats on coins and maintaining profiles on them

However, the days of price and marketcap are over. We are seeing that feedback come from larger customers. They want to see code checkins, they want to see what's happening in the different sub-reddits, they want to keep up with what the team is tweeting. All those feeds are important to give you a holistic view of a coin and the market in general.

Anyway, happy to help and share whatever we can. Feel free to drop us a note.

Marketcap is totally overblown, I agree! We talk a bit about it in our FAQ. And I'm sorry, I assumed I needed a login on your site because I just couldn't find a way to quickly send a query.

Most sites hide they API behind a login and require a key and signing a TOS. That's not public. Our public API is totally public.

I'll be happy to get in touch, because we are starting with the same goals as you: low latency, and stats.

To see what you have achieved there, can I get a sample of your raw data? Like the first 2 days of december, showing at least the bid/ask/last per exchange, per pair. More if you have more.

It should be stale enough and a small enough window to not cause problem extracting or be of much value. Any format you want is fine. You email me a link to the dump and I'll have a look.

I must say I'm very curious now.

Thanks for making this! I was looking for a solution that could provide me a list of cryptocurrency domains.

Cool site!

I am liking the non-linear x-axis on the slow zoom graphs. I had never seen those before. I just wonder why the resolution in the month and week part of the graphs is not so good? You should have many more data points than what you are rendering, shouldn't you?

I guess that you are preserving min/max in a period despite the lower sample rate?

Non linear X axis is a new method we introduce. We call it the "hour day week month" view, or the log timeline, because it is a bit like a log-plot: log data of time on the X axis.

It was made to quickly answer many questions that could only be done with the tables of numbers from accessible version.

Say something happened. You want to know how many hours ago was there a big move? How is it holding after that? How does it compares to yesterday? To the week before? To the month before?

To do that, even if we have data, the resolution must lowered. Because you want to a quick eyeballing, and if the bucket size vary too much, it is much harder.

Take XRP for example, go http://cryptomarketplot.com/timeline/ripple.pdf

[actually, I must have crashed the PDF part last week, so the numbers are from Dec 2. Sorry. Let's imagine it is today. We are working on it right now]

You see that the peak was 6 days ago, it had a large jump compared to the other DAYS. And the left, you see that on the last 4 months XRP/BTC has kept growing.

If you just look at the graph very quickly, you see a patter. The shape.

You can visually correlate the pattern to the other coins, and see if they all responded in the same way or not to a market event.

Good work!

I see 96 coins. Could you add more? Doesn't need to have everything, but at least the couple of hundred popular ones.

How long do you plan to keep it online ?

Can you add market_cap to this list?

percent changes?

Edit: I am using this in https://coinzaa.com/ now , thank you

Percent change, you mean you want the equivalent from the original CMC JSON:

        "percent_change_1h": "XXX", 
        "percent_change_24h": "XX", 
        "percent_change_7d": "XX",
We can add that, but we want to use fixed points in times, to avoid floating periods comparison.

Here is an example for the change in 1h: it is 10:45 AM, so do the average for 10AM, do the average for 9AM, see the percentage change.

A bad method is to average from 10:45AM to 9:45AM, average from 9:45AM to 8:45AM then report the percentage change, because if there was a big change at 9:30, and just one, then the coin is stable, it will have decaying effect on the percentage change. You will see it moving, while the coin has stabilized! To me, that's wrong.

Coinmarketcap was doing the latter. We can support that, but you should consider switching.

what CMC does is what everyone does, i think it's the standard method. From your frontpage it seems u already have those values somewhere

We have many values, but if we think they may mislead people, we don't show them. It is our ethics. We do not want to do what everyone does.

We will show more coins when we think we can show non misleading data. It's a question of trust. We want happy visitors and happy clients. We want to earn their trust.

Thanks for a lot for using our data on coinzaa! We would appreciate a link, but only if you feel like it.

i have 2 links. one in the frontpage and one in the footer . I also run an ad banner to your site

wow 2 links, we didn't ask that much :-)

I really appreciate. We will work on having the percentage change online for you in the API as soon as possible.

Have you evaluated cryptoquote.io? Take a look at their real-time level 1 and level 2 websocket APIs. They seem to understand market data and have navigated the non-standard connections to cryptocurrency exchanges well.

They want a login before even giving a key.

Can you summarize their features? What data do they show?

We offer real-time data to clients. Real time is hard to beat.

Real-time level 1 and level 2 price feeds Time series historical data; tick, n-minute, daily bar database Various REST APIs to build CMC like web displays

Thanks! So generally the same things we currently already have. Don't they have full market book data? We are wondering if we should do that. It could be a separate subscription plan if there is enough interest.

We are prioritizing in new features people who want to do a CMC like web display but are not comfortable with coding.

We want non programmers to get our data without depending on the JSON or other complex stuff. Something light and simple.

So, it's called Tor because it's an acronym, The Onion Router, but you're not allowed to write it as an acronym?

That's just awkward, it's not like they have a logo of a hill, they have a logo of an onion.

There is no universal way to write something “as an acronym”. Capitalization will always be on a case-by-case basis.

“Tor” isn’t really even intended to be an acronym anymore. It’s just the name of the project.

I think they dont use onion routing anymore either but the name is the name.

Tor does use onion routing, and always has.

Then they should update their branding: there's a giant picture of an onion on their download button and they stylize the O in 'Tor' with an onion.

I know HN typically has a harsh response to rebrands such as the Mozi//a rebrand but this is the alternative and shows rebrands are still important to do from time to time.

We could fix that, but I kinda like TOR.

Keeping it in all caps (like when it was just an acronym) puts it forward.

We want to emphasize our support of privacy.

Fair enough if that’s what you want but if you just make up how you name things it’ll confuse people. You wouldn’t spell PGP like PgP either.

I don't want to confuse people!!

Ok, we'll fix that.

Why the scientific notation?

    3.436e3 $/BTC now

From http://cryptomarketplot.com/cmp-faq.html :

What exactly does 1.23e-4 means? Why do you use the computer form of scientific notation?

We use scientific notation to remove the leadings zeroes. What is simpler to read quickly, 0.000123 or 1.23e-4? If you trade crypto, you usually already know by heart how many zeroes are in front, and what is the approximate price range - you only care about the changes of the non zeroes. If the price goes from 0.000123 to 0.000142 we can save a lot of space on the screen by just writing 1.23e-4 and 1.42e-4. This way, the changes jump out and you read more numbers faster.


We use the computer form of scientific notation. 1.23e-4 instead of 1.23*10^-4, because this saves a lot of space of the screen. Scientific papers and traditional researchers may frown upon this "degenerate notation." But we absolutely love this concise and elegal notation! It may be a good thing we are in business, and not in the ivory tower of academia! We get more freedom to write numbers how we damn like!!

Yeah it’s not. My first thought was that you had messed up large integers with javascript. I’m probably not the only one who thought that.

> What is simpler to read quickly, 0.000123 or 1.23e-4?


And between 0.00000123, 0.000123, 0.0000123 you are sure which one is which without effort?

I can't

When they’re aligned vertically, say as part of a table, then leaving the zeros in makes it much easier to read.

Not sure.

Check http://cryptomarketplot.com/accessible-index.html : the numbers are also aligned, and in less space that it would take if 5.744e-5 was to have all its leading zeroes.

Within each section, right now, the exponents remain the same. I’ll concede that when that’s true, the choice of notation is irrelevant.

However, occasionally, prices will straddle a boundary between 1.9eX and 9.0eY with |X - Y| = 1. In those cases, the different exponents will be easier to miss than the different number of digits or different number of leading 0s.

I would argue that in this case, the big change from 1.9 to 9.0 would catch your attention even more than the change in exponent.

But by the same login, I agree with you: .9eX and 9.0eY with |X - Y| = 1 may cause too much focus on what is a small difference.

Some hard choices were made. It is not perfect.

i disagree, the standard notation with 8 decimals is easier to process instantly. Or at least show everything with as <value>E-8 so that eyeballing is easy

3.436k is a much simpler way to remove the zeros, and actually includes one less character.

Yes for BTC, then for something 10x that 34.36 start looking not as good.

We could make an option for people who prefer regular numbers. I will add that to the feature requests.

I think I’ll look back on this day in the future and smile:

At one point the crypto bulls were so bullish that they worried they wouldn’t easily be able to fit in enough zeroes for the price without using scientific notation...”

I am indeed bullish on crypto, but the decision is driven by facts, not by passion.

The fact is the price range vary too much, even in the same scale (say BTC/USD vs XRP/USD), so we decided to have 5 characters for every price.

That requires the use of scientific notation.

Cool UI. How soon till you support all the coins that CoinMarketCap has?

We already have that data. We don't show it because we want to filter out bad data!!

Let's take an example: illiquid coins, like for new forks.

Look at the prices quoted on every exchange: you will often see huge differences. Because on some exchange, you can only buy the new coins - not sell them. So the price is high. On the exchanges where you can buy and sell, the price is low.

We think that's scammy. We don't want to list these coins or that information.

We are working on ways to do that, but extending over the top 50 is not very high in the priority list. There are even coins from the top 100 we are not comfortable showing in the API. We just hope they won't ever make it to the top 50 on our frontpage :-)

On a different note, if you want to see just the value of your portfolio, you can use this site:


You're supposed to save your portfolio as a bookmark. Therefore it's simple, has(almost) no JS, no login, no cookies, 100kb per page load, after that some 5kb.

It uses coinmarketcap though.

Sorry for piggybacking here but it might be useful to some.

1996 just woke me up to tell me we are first page. I will be making a long request of simple features (and he will ask me to stop crashing things!)

Portfolio tracking as a bookmark is a very nice feature respecting user privacy. And it's simple, no clutter. It adds to the experience.

We must implement that, now that I've seen it!

Giving good ideas is not piggybacking to me. Thanks a lot for this mention. Your suggestions are very welcome!

There's also https://coincall.io which lets you create a portfolio without registering as a user.

Thanks, I will see how they do it.

I don't want registration or even cookies.

You can also get all the data you want for free from: https://min-api.cryptocompare.com/documentation

Sorry but not exactly. Free as in free beer. Not free as in free speech.

From https://min-api.cryptocompare.com/pricing : "You must credit us with a link if you use our data on your website or app"

Nobody has to credit us in any case: if you use the free API, no attribution needed.

We will soon release a new batch of features to make the website who want to use our data but are less technical and don't know how to use JSON.

You might consider having a few contests to create awareness like Coingecko https://medium.com/@492727ZED/calling-the-bottom-ec21c4442a8...

Creating awareness is good, but we want to concentrate on adding features at the moment.

I like the idea of tracking a portfolio without logging. We must think more on how do to it without accidentally tracking users. A bookmark would be nice.

Cofounder at CoinGecko here, congrats on the launch! There are lots of interesting nuggets that you share on the FAQ page which some I do share similar thoughts on.

PS: We also provide free public API for many different data points at https://www.coingecko.com/api

Launch was a nightmare!

Quite literally: I posted before bed, then edited my post to say we are sorry about the PDF when I realized a new feature added last week seem to have killed the automatic PDF making. Oops moment, but I felt bad about deleting the post. And I was afraid I would see no response when I wake up.

Then had nightmare about broken features, and now I wake up and we are on the first page!! So it's a true nightmare :-)

Much honored to be talking with the CoinGecko founder, and that you like what we did!

On the FAQ, we tried to explain in more details why we did things differently. We want to focus on other things that seem neglected by other sites. Cryptomarketplot was made because there was nothing much like what we wanted.

For example, the website should to work when used with anything, and it should be very fast even if you do not have a fast internet connection. And we want to see the graphs, and the numbers, with minimal clutter. So we made the product that we wanted.

Some of the wants are technical: try to open the website with links in a Linux terminal, it still works. Try to read it on 3G, it is still fast. 1996 is very proud!

Some wants are harder to explain: we do not want people to get scammed. We do not like marketcap because it's an easy way to fool people. But it can turned into a tool to warn people that a coin which jumped from spot #1000 to say #19 in about 3 days may be suspicious!

Many of our wants are philosophical like that. We want to find clients to be profitable, but also we do not want ads or tracking visitors, now or ever. We do not want to restrict freedom of anyone, so no API key, no license. You buy the data, it's yours.

And we accept donations to people who share that spirit.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact