The BLP Blog (BLPB?)

Dump of Historical Magic Card Prices from BLP

Tue 20 May 2014

As mentioned in the previous blog post, BLP will slowly become fully open source. The first step is giving access to all the data used to generate the graphs on that has been collected since 2008 from the price guide on the Magic Online Trading League. The gist is copied below from the blacklotusproject/data repo on GitHub.

If you have feedback or questions, post in the Facebook comment widget or on the GitHub repo. It'd be great to hear and see what is being done with the data.

Downloading the data

The data is available for download: black-lotus-project-data-2013-10-22.tgz (318MB)

Data quality

When new sets first went on sale, cards from the new sets would quickly be sold among players and show up on MOTL's price sources. It would sometimes take MOTL weeks to update its card lists with the new sets, which unfortunately led to associating prices from new cards with cards from older sets.

The data here is unchanged from MOTL's lists, which means there are periods where old cards normally worth a few cents have short periods of inaccurate high valuations.

Understanding the data

The archive consists of 8 CSV files that were dumped from a MySQL database.

  • artists_artist.csv
  • cards_card.csv
  • cards_cardset.csv
  • cards_dataload.csv
  • cards_setblock.csv
  • cards_valuepoint.csv
  • pricelists_pricelist.csv
  • pricelists_pricelisttype.csv


id: Primary key

name: Name of the author

website: Known site of the author (sparsely populated by hand)


id: Primary key

card_set_id: Foreign key to cards_cardset.csv

name: Name of the card

color: Color of the card ("Multicolor" if more than one)

rarity: One-character rarity of card {"C": "Common", "L": "Land", "M": "Mythic rare", "R": "Rare", "S": "Special (promotional or other)", "U": "Uncommon"}

artist_id: Foreign key to artists_artist.csv


expansion_code: Primary key; 3-character code for expansion used by Wizards of the Coast (WotC)

name: Name of the card set

set_block_id: Foreign key to cards_setblock.csv

motl_abbreviation: Expansion code used by MOTL, which differs primarily in earlier sets; (Example: "Revised Edition" is identified as "3ED" by WotC but as "RV" by MOTL)

release_date: Date expansion was made available for retail purchase

card_count: Number of cards in the set


id: Primary key

date: Date and time load started

prices_used_count: Number of card prices that matched cards in cards_cards.csv at the time of the load and were used for graphs on

prices_unused_count: Number of card prices that did not match cards in cards_cards.csv at the time of the load and were not used for graphing


id: Primary key

name: Name taken from WotC's Gatherer for set block


id: Primary key

card_id: Foreign key to cards_cards.csv

dataload_id: Foreign key to cards_dataload.csv

price: Average card price in USD of prices within 1 standard deviation of average

standard_deviation: Standard deviation of price set used to calculate price in USD

average: Mathematical mean of prices in price set in USD

high: Highest price in price set in USD

low: Lowest price in price set in USD

change: Change in price in USD from last valuepoint's price (can be negative)

raw_number: Number of prices in price set

date: Creation date of valuepoint

percent_change: Percent change in price from last valuepoint's price (can be negative)


id: Primary key

created_at: Creation date of pricelist

file: Absolute path to original pricelist from MOTL; Prepend "" to access the original file


If you do any clean up of the data, make interesting finds, or do anything cool at all, open an issue on GitHub to share: blacklotusproject/data


All data is available under a standard MIT License, which is included in the archive itself. Refer to it for full details, but the gist is: do with this data what you like but always cite your source.


Coming to an End and Open Source

Mon 13 January 2014

The primary data source for Black Lotus Project, Magic Traders, has become unresponsive about updating its pricelists, which has made the graphs on Black Lotus Project sorely out of date. This project was started when few other sites offered historical prices or graphs, but since BLP's inception in 2008 the Magic card financial niche has exploded. There are several other great sites that offer more than Black Lotus Project does currently, and they update their prices on a regular basis.

In the coming weeks, I plan to open all of Black Lotus Project's source in case it sparks other developers' creativity around card pricing. I will also export the entirety of BLP's historical prices in several formats for others to use for whatever they like. The data came from a free source, and I intend to offer the data for free as well. will likely exist for some time to come, but there will be few updates beyond opening the source and historical data from the site. If you are interested in historical data in a specific format or other information about open source, tweet at @blacklotusproj.


Gatecrash, Return to Ravnica, and Magic 2013 Added

Sun 10 March 2013

It has been a long time in the making, but today Gatecrash, Return to Ravnica, and Magic 2013 prices were added to the site.

Magic Traders had been working on keeping its price list up-to-date and added the sets that had been missing for several months.


Mobile Friendly Graphs

Fri 16 November 2012

Graphs of past card prices are the center of Black Lotus Project. Since the graphs started being drawn, they used Google's Annotated Timeline from their visualization library. It offered the most features and looked the best. However, it was implemented in Flash. Using Flash meant graphs were not drawn on most mobile devices.

Today graphs started being drawn with the Dygraphs Visualization Library, which uses JavaScript, HTML, and CSS instead of Flash. The great news: mobile phones and tablets love JS, HTML, and CSS. The graphs were customized to look similar to Google's Timeline and to add a few features that were missing from Dygraphs.

Pick up your phone or your tablet, and try cruising around the site. If you see any problems, tweet at @blacklotusproj.


Dark Ascension & Avacyn Restored Prices Live

Fri 18 May 2012

Magic Traders updated their pricelists earlier this week, which means Black Lotus Project can now get up to speed. Dark Ascension and Avacyn Restored are now in full swing and are populating prices like normal.

The top contenders? Cavern of Souls from is by far the most sold card from Avacyn Restored. It has a 20%+ edge over the next most sold card, Vexing Devil.

Dark Ascension is a bit old news at this point, but Sorin, Lord of Innistrad and Huntmaster of the Fells are most sold from that set.

Some card images are still missing, but those will be filled in before too long. If you notice anything weird with either of the sets, leave a comment, and I will take a look.


Site Downtime

Sat 10 December 2011

BLP's hosting announced some scheduled maintenance, but the site didn't restart properly after the maintenance. It still pulled data normally, and everything is now back online.


Innistrad and Magic 2012 On the Scene

Sun 6 November 2011

Magic Traders updated its pricelists today after a long wait with Innistrad and Magic 2012. There are a heap of discrepancies with cards that were printed in multiple sets, so some cards might not be getting prices like expected. If the pricelists don't fix themselves over the next couple days, BLP will special handle those cards to make sure prices are being attributed to the correct printings.

You might notice a few new sets when clicking through the site like Master's Edition II and IV. There is some work going on to bring MTGO prices onto the site. Stay tuned...


Exploring New Pricing Sources

Wed 26 October 2011

The prices on Black Lotus Project flatlined starting September 17th because the pricelists on Magic Traders stopped updating on that day as well. Despite several attempts to contact the folks behind the site via email and their forums, the pricelists are still stagnant.

That being said, it is time for BLP to get its prices elsewhere. Several users have emailed about sites like and TCGPlayer, but what is the most reliable place for Magic prices right now? If there are regional sites that provide better prices in your area, what are they?

Shoot me an email at or post a comment.


In Comes New Phyrexia!

Sat 4 June 2011

BLP started getting prices for New Phyrexia a couple days ago, and the set has since taken over the most popular cards chart. Jace is not surprisingly still in the top 10 most popular cards, but his price has continued to fall since peaking in mid-March.

Black Lotus Project depends on the great pricing data provided by Magic Traders, which means the data here stays up-to-date as long as Magic Traders does. Please support those guys to help keep both their pricelists and BLP as useful tools for everybody.


Mirrodin Besieged Clawing its Way to the Top

Tue 8 February 2011

Mirrodin Besieged has made its way onto Black Lotus Project, although it doesn't currently dominate the most popular cards like new sets usually do.

Jace, the Mind Sculptor still has the number two seat and has been in the top 10 ever since he debuted. Koth still has a whopping 18% higher volume than the most popular card from Mirrodin Besieged, but that will likely change as more product makes its way into players' collections.


Scars of Mirrodin, Comments, and Lotsa Images

Tue 30 November 2010

BLP has Scars of Mirrodin! The pricelists started updating last week, so all Scars cards have some price points now. The most popular cards are dominated by mythic rares from both Scars and M11 as well as a lingering Vengevine whose price seems to have leveled in the past month but is still the most popular card from ROE.

Comments on cards and blog posts had been busted for some time after upgrading the site to a newer version of Django, but they should work once again. As soon as they were fixed the spam bots came in in full force... If comments stop working again it will be intentional to try to stop the spam!

The default card back was incredibly ugly to look at in the charts, so the process of getting new images is now entirely automated. You should see far fewer of those creeping into the charts as all the older sets are filled with their card images.


Magic 2011 Premieres

Tue 20 July 2010

The pricelists were updated with Magic 2011 yesterday, and the charts here at Black Lotus Project are now filled with cards from the new set. As usually happens with new sets, the most popular cards chart is being taken over by Magic 2011 and will stay that way for a few weeks as the value of cards like the new Titans is sorted out for Standard.

The reprint of Baneslayer Angel has already worked to drive the value of her first appearance in M10 down by more than 30% from her peak average price of $44 to a much more affordable $32. Her M11 version is already 10% cheaper than that at around $29.

The new Titans are some of the most popular and the most valuable cards in the new set right out of the gate. Of them all, Primeval Titan has a much higher volume of 291 than the second most popular Grave Titan, which has 20% fewer auctions at 231 volume. Primeval Titan is also the second most valuable card in the set right now with a nearly $28 price tag, sitting behind Baneslayer Angel by only a 3% margin.


Rise of the Eldrazi Makes its Debut

Sun 25 April 2010

The guys at Magic Traders have been quick to update their lists recently and added Rise of the Eldrazi right as it went on sale. Pricing data for the new set should be filling in here on Black Lotus Project.

Jace still rules the popular chart with around 250 more volume than the next most popular card. A few Eldrazi cards have already made their way into the popular chart, and I imagine they will move up quickly as players crack more packs.


Worldwake Hits the Charts

Sat 27 March 2010

Magic Traders added Worldwake to their pricelists a few days ago, which means Black Lotus Project is now getting prices for the set. Worldwake has not surprisingly taken over the most popular cards chart, and it will likely stay that way for a while.


Internationalizing the Price Ticker

Thu 11 February 2010

The price ticker has been a big hit since it debuted on Quiet Speculation nearly nine months ago. It has slowly gained features as other Magic bloggers have found the ticker and wanted to customize it for their sites. Last week a player from the European Union asked about getting the prices in Euros, and I thought that was a great idea.

$ £ € ¥

If the currency is set on the ticker, Black Lotus Project fetches the current exchange rate for that currency from Google/Citibank and converts all of the values before sending them to you. If the currency has a unique and commonly used symbol, the JavaScript will display it instead of the three-letter code.





New Ticker Options:

Three-letter currency code to which all values should be converted


Awaiting Worldwake

Wed 10 February 2010

Worldwake is open to the public, and I am anxious to start graphing its prices. Once Magic Traders adds the new set to their index, Black Lotus Project will start pulling in the data. Seeing the Zendikar sac lands at the top of the most popular list isn't too exciting anymore.

I appreciate the feedback and requests people have been emailing me and the comments people have been leaving on the site. I am interested in how other players are using the site and where the price ticker has found its way. If you've got suggestions, drop me a line.


Weekly vs. Monthly Prices, Which to Use?

Thu 29 October 2009

Black Lotus Project relies on the pricelists that Magic Traders publishes every day for the pricing data shown throughout the site. They collect data from eBay and calculate the "price" by averaging the selling price of all auctions for a given card. Cards sold infrequently like Black Lotus or Time Vault have highly variable prices because there are so few auctions used to calculate the average. To compensate for the variability, Magic Traders publishes two versions of the physical Magic card pricelist: a monthly version and a weekly one.

The monthly pricelist uses prices from the past 30 days of auctions to calculate the price. Since prices for odler cards change slowly, this list gives an accurate price for cards that have been in print for a while like the two examples above. The weekly list often does not have enough data to show any price at all for cards that are sold infrequently.

The weekly pricelist uses prices from only the past 7 days of auctions to come up with its numbers. For newer cards and cards whose popularity can spike overnight like Grove of the Burnwillows, the weekly pricelist gives a far more accurate price than the monthly one can. The older values in the monthly list weigh down the average price, causing BLP to sometimes show a much lower price for a card than it should.

I am looking at an intelligent way to store and display the weekly versus monthly price for all cards so you can rely on BLP for current trading values. Cards will have separate graphs for the two pricelist types, and the daily graphs will likely use the weekly list instead of the current monthly one.


Zendikar Has Arrived!

Tue 6 October 2009

Magic Traders added Zendikar to its pricelists yesterday, which means the data is flowing into BLP. Lotus Cobra is not surprisingly the highest valued card at the moment ringing in at nearly $25! We'll see in the coming weeks whether it truly can hold that high price tag.

Zendikar only has three entries in the top 15 highest sellers at the moment: Arid Mesa, Misty Rainforest, and Goblin Guide. However, that should slowly change as product makes it into more players' hands.


Bring out the Artists

Wed 9 September 2009

I am fascinated with Magic card art, but I unfortunately remember only the names of some of the prominent artists from the first set of Magic I ever played, Revised. Guys like Greg Staples and Christopher Rush came up with some of the iconic, most recognizable artwork from the entire card game. Amy Weber drew the skeletons on one of my favorite pieces ever, Time Walk.

Card pages now link to their artists, and the artist pages contain lists of all artwork created by those artists. There are also some basic charts that should become more useful as I make more sense of the MOTL data. It will be interesting to see whether the popularity of the card artwork or even the artist can influence the value of a card in the long run.


Expanding the Card URL

Mon 31 August 2009

I am interested in making the URLs at Black Lotus Project incredibly easy to understand. The URL for any given card used to use the 3-letter expansion code to denote the set. /3ED/Volcanic+Island/ lead to the Revised Volcanic Island, and /LEB/Time+Walk/ lead to the Beta Time Walk (LEB = Limited Edition Beta). You had to know the expansion code to get to the card.

I have expanded the card URLs to use the full set name, which should make it easier to navigate. I've also added linking from cards back up to their sets and an alphabetical listing of the cards in a set to make the site more navigable.

Linking to a card page on Black Lotus Project is as easy as pie. The cards section of the site is under "/cards/". After that, type in the set, something like "/cards/Fallen Empires" or "/cards/ice age". Then just put in the name of the card you want, maybe "/cards/ice age/necropotence" or "/cards/Fallen Empires/Goblin Grenade". I have actually found myself navigating sites with meaningful URLs by typing in the location bar rather than clicking through links.


Adding Color to the Price Ticker

Thu 6 August 2009

Another developer requested custom colors for the price changes in the Price Ticker instead of the current drab green and red. That seemed like a cool idea that would allow the ticker to fit into any web page, so I added it to the API.

The ticker now has the options up_color and down_color. Setting one or both of those will set the inline text color of the prices that have gone up and down. I also added styles to the color spans, which lets you set the colors in a stylesheet rather than through JavaScript. I will prefix all Black Lotus Project styles with "blproject_" to prevent any clashing. The classes are "blproject_price_up" and "blproject_price_down". If you want to set the colors with those styles, you also need to set either up_color or down_color to "none" to prevent the ticker from adding inline colors.

Crazy Examples


New Ticker Options

Text color for prices that have stayed even or gone up since yesterday. A value of "none" will disable all inline color styles. Default: "green".
Text color for prices that have gone down since yesterday. A value of "none" will disable all inline color styles. Default: "#A03".

New Ticker Styles

Text color for prices that have stayed even or gone up since yesterday. Either up_color or down_color must be set to the string "none" on the ticker for this style to have effect.
Text color for prices that have gone down since yesterday. Either up_color or down_color must be set to the string "none" on the ticker for this style to have effect.


Magic 2010 in the Mix

Sat 1 August 2009

The guys at Magic Traders added Magic 2010 to their pricelists last night, which means Black Lotus Project now has some data to work with. Tenth Edition cards that were reprinted in M10 were getting odd values because M10 wasn't in the pricelist yet. Birds of Paradise, Twincast, Pithing Needle, and a few other cards were taking credit for sales that didn't belong to them.

A particularly curious card was Drowned from The Dark, which looks like it was taking the volume and pricing data for Drowned Catacomb from M10. There's no simple way to correct the bad data over the past two to three weeks, but I don't think it should cause any problems in the long run.

Check out the new most popular cards chart, which is dominated by Magic 2010 and likely will be for several weeks.


Making the Magic Price Ticker Seamless

Tue 28 July 2009

The BLP Price Ticker is running strong, but it leaves a big gap on the screen when it reaches the end, waiting to wrap back to the right side. To fix that, I've added a new continuous option that wraps each card and its price rather than wait for the entire ticker to wrap. If you leave out the continuous option, the ticker will run like it always has. I've tested this puppy out in Firefox 3/3.5, Safari 4, IE7/8, and Chrome 2, but let me know if you see any weird behavior.




Magic 2010 Still Missing...

Magic Traders is still missing Magic 2010 in their pricelists. I'll get the new cards into Black Lotus Project as soon as the data starts flowing.


No More Chart Prices Under $1 and Waiting on Magic 2010

Fri 17 July 2009

I tend to skim the BLP charts every day, and I noticed my eyes consistently skipping over any card with a value less than $1. There are plenty of essential cards worth less than $1, but the difference between a card being worth $0.75 and it being worth $0.95 is not exactly noteworthy.

All charts now filter any cards with prices less than $1. Cards will jump in and out of the charts if their values hover around $1, but I don't think that should be a big problem. This will also help with the problem of new sets first hitting eBay. Dealers and players alike throw every card from the new set up for auction, waiting to see which ones bring the highest bids. That causes the entire new set, including dozens of cards worth less than $1, to dominate the Most Popular Cards chart for several weeks. This change should help to keep all charts far more relevant than they were previously.

Magic 2010

Since BLP's data comes from Magic Online Trading League, BLP is at the mercy of their pricelists. As soon as Magic 2010 shows up on Magic Traders, BLP will have it too. I am interested to see how the values of some of the useful reprints will hold up. As of now, several have already taken steep nosedives. Pithing Needle, Twincast, and the planeswalkers have already seen big losses in anticipation of M10 going on public sale.


Several Updates to the JSON API

Fri 17 July 2009

I made a few changes to the card price JSON API today and wanted to outline them here. I added all statistics that are available from Magic Trader's pricelists to the interface, which include price, high, low, change, average, and volume (which is called "raw number" in Magic Trader's lists). I calculate the percent change, so I have also made that available.

[{"volume":13,"percent_change":"0.00","name":"Lightning Bolt","url":"","price":"8.66","high":"15.00","low":"0.01","set_code":"LEB","average":"8.40","change":"0.00"}]

The up attribute, which was a convenience value I added for the price ticker, is gone. I found strings can easily be coerced to numbers in JavaScript by simply multiplying by 1. "15.99" * 1 = 15.99

The volume attribute is a number, but all other number values will remain strings. Rather than dealing with rounding issues, the numbers will remain stringified. Just multiply by 1 if you want to compare any of the values as a number. prices[0]["change"] * 1 >= 0 will tell you whether the card went up in price today.

Price Ticker Updates

After learning how jQuery handles JSONP, I fixed the API so it can safely create as many price tickers on a single page as you like. Previously, tickers were using the same global method named jsonp, which essentially caused a race condition when putting multiple tickers on a single page. Like jQuery, each ticker now uses a unique identifier to insure tickers don't clash on their JSONP function names.


Creating Custom Pricelists via the JSON API

Fri 17 July 2009

The JSON API has a new cards option, which is the first step in making the API customizable. The cards option is interpreted as an array of card names with optional set codes. If that option is set, the JSON API will return today's prices only for the cards in the list!

A call such as:

Would return a response like this:

[{"percent_change":"0.00","name":"Black Lotus","url":"","price":"1999.00","up":true,"set_code":"LEA","change":"0.00"},{"percent_change":"-4.07","name":"Black Lotus","url":"","price":"1052.89","up":false,"set_code":"LEB","change":"-44.71"},{"percent_change":"-1.54","name":"Black Lotus","url":"","price":"757.52","up":false,"set_code":"2ED","change":"-11.87",}]

JSON Cards List Interface

The cards list has a few restrictions that try to keep the interface as simple as possible. If you aren't getting the responses you expect, check that your cards list follows these standards.

  • Card names are separated with the pipe character ("|").|time+spiral
  • Spaces in card names should either be escaped with a plus sign ("+") or with the HTML character code %20. Typing spaces into your browser's address bar will work just fine, but you can't copy/paste a URL with spaces in it or use it in code.

  • Card sets are specified by putting the card's expansion code, as defined in the "Expansion Code" column on Wikipedia's Magic: the Gathering sets page, in parentheses after the card's name. The API expects both parentheses to be present and will not recognize expansion codes outside parentheses.
  • Cards with no set specified will return all versions of that card. If the card was only printed in a single set, only a single result for that card will be returned.

  • The JSON API fails silently but returns as many results as it can find. If you mistype a set on a single card within the list, all other cards in the list will still be returned. This might change in the future as the API becomes more complex.
  • JSON responses are returned with a MIME type of application/json, and Firefox's default action when seeing that type is to download the response. To view the JSON responses in Firefox, I recommend JSONView. I used it while testing the JSON API changes and found it hugely helpful.




The JavaScript ticker got a new cards option to go along with the update to the JSON API. It takes an array of card names with expansion codes if you need to get specific. Also the timeout option is actually called interval. I mistyped the name when I wrote the last post.

New Ticker Options:

A list of full card names which may also contain expansion codes enclosed in parentheses. Card names are separated by the pipe character ("`|`").
(Correct naming of timeout option) The time in milliseconds between each interval. Default is `40`.


Magic Price Ticker and the BLP JSON API

Fri 17 July 2009

The guys at Quiet Speculation mentioned a self-updating stock ticker for Magic card prices as another cool feature they would like to see. In the spirit of BLP's stock-like price graphs, I thought the feature was a great fit.

The first iteration of the ticker is below! It requires JavaScript like the embeddable search bar I added a few days ago, but the ticker runs off BLP's new JSON API. The API is publicly accessible, but it's pretty basic at the moment. The API is available at and returns today's top cards, their prices, and their changes from the previous day.

Sample response:


The interface supports JSONP through the jsonp attribute. A request to would return the data wrapped in a call to callback.

JSONP callback:




The ticker can be embedded in any web page using this code. It supports a few basic options right now.

Ticker options:

The number of pixels the content is scrolled at each interval. Default is 2.
The time in milliseconds between each interval. Default is 40.
Whether to hide the three-letter expansion code after the name of each card. Default is false.

Tickers only have a single function: draw. It takes the ID of the element that the ticker should use.


Quiet Speculation Premieres the BLP Embeddable Search bar

Fri 17 July 2009

Quiet Speculation is an awesome blog about Magic finance created by Kelly Reid. I am constantly impressed with his posts and that someone else is as interested in Magic card prices as I am! Kelly asked me if it would be possible to embed a BLP search bar in his blog, so I got right to it. For anyone else who is interested, you can copy/paste the code to the right into any webpage and get the same BLP search.

Kelly has given me a few other ideas for embeddable Magic card features, and I've got a few tricks of my own. If you have any ideas or requests you'd like on your Magic site, be sure to sure to drop me an e-mail.