We’ve made it our mission to become America’s gateway to live entertainment. We even put it on our wall, right by the front entrance of our office.
So one area we’ve focused on is live event recommendations. After all, you can’t go see your favorite band if you don’t know it’s in town.
For the past year, we’ve been improving the recommendation service that powers our recommendations calendar on seatgeek.com…
…as well as our concert recommendation app on Spotify:
After much work, we’ve finally advanced it to the point where we’re comfortable integrating it with our public events API and releasing it to the world.
We believe our recommendations are far more advanced than anything you can find on the Web right now, and we’re excited to see developers start to use it.
How Most Music Recommendation APIs Work
Recommendation engines operate on a pretty simple principle. You take a whole bunch of users and find out what they like. Then you build a whole bunch of correlations of the form, “People who like X like Y.” From that, you assume that X is similar to Y. When your next user comes along who likes X, you say to him or her, “We think you might like Y as well.”
There are quite a few publicly available APIs that support “similar artist” type queries. Last.fm has a good one. It’s a simple model to implement. The results are easy to cache. The problem is you get some pretty mediocre results when you try to do anything interesting.
A Motivating Example
Let’s say we have a user, Bob. Bob lists his two favorite musicians as Taylor Swift and Kenny Chesney. If you were to hit the SeatGeek API and ask for similar artists, you might get something that looks like this:
Artists Similar to Taylor Swift 1. Carrie Underwood 2. Justin Bieber 3. One Direction 4. Katy Perry 5. Ed Sheeran Artists Similar to Kenny Chesney 1. Tim McGraw 2. Brad Paisley 3. Zac Brown Band 4. Jason Aldean 5. Keith Urban
Taylor Swift is a pop star with country influences and teen appeal. Unsurprisingly, she is most similar (on a 1:1 basis) with Carrie Underwood, another pop star with country influences and teen appeal. But she is also similar to some teen pop sensations (Justin Bieber) and some ordinary pop stars (Katy Perry).
Kenny Chesney, on the other hand, is pretty much just a country singer.
You can probably guess where I’m going with this. If Bob likes Taylor Swift and Kenny Chesney because he’s a country music fan and we start encouraging him to go see One Direction shows, he’s gonna be none too pleased.
And yet, unless you want to go through the trouble of building out your own recommendation system from scratch, that’s about the best you can do in terms of public APIs on the Net.
How the SeatGeek Recommendation API Works
The proper way to recommend music for Bob is to find other users like Bob and figure out what they like. In other words, to say, “People who like X and Y like __.” If Bob were to give us a third preference, the question becomes, “People who like X, Y and Z like __.” If he gives us a fourth preference, we use that as well.
Because the space of possible combinations grows exponentially, we can’t just compute all of these similarities and cache them. Instead, we use some clever math and compute affinity scores in real time. That allows us to support extremely flexible recommendation queries internally that we can use to build interesting experiences for our users.
Let’s go back to Taylor and Kenny. What happens if we try combining their preferences?
Artists Similar to Taylor Swift + Kenny Chesney (Jointly) 1. Tim McGraw 2. Jason Aldean 3. Carrie Underwood 4. Brad Paisley 5. Zac Brown Band ... 16. Katy Perry 23. Justin Bieber 31. One Direction
As you can see, the country music rises to the surface, and the teen-pop sensations fall out of the way.
Now let’s see what happens if we find a second user, Alice, who identifies her favorite bands as Taylor Swift and Katy Perry. Well, we might suspect she’s a fan of female pop stars, and our recommendations bear that out:
Artists Similar to Taylor Swift + Katy Perry 1. Ke$ha 2. Justin Bieber 3. Pink 4. Carrie Underwood 5. Kelly Clarkson ... 44. Zac Brown Band 49. Kenny Chesney
As we go deeper into the rabbit hole with more preferences, the recommendations become more and more advanced.
What follows is an example, simplified preference space. Green bands are ‘similar’ to X. Red bands are ‘similar’ to Y. Blue bands are ‘similar’ to Z. A user likes X and Z. What should we recommend?
Most recommenders combine preference through what is essentially a union operation. If a user likes X and Z, he will be shown events which are similar to X and events which are similar to Z.
SeatGeek’s recommendation engine (code-named Santamaria) computes the joint recommendation set of X and Z. In effect, it extracts the similar characteristics of X and Z and recommends other performers that share those specific traits. This leads to a much more accurate set of recommendations for the user.
As the number of seeds grows, the composition of preferences becomes more and more specific, and we can accurately recommend shows to people with fairly idiosyncratic tastes.
Using Our API
We’re very excited to be finally opening up our recommendations API to the public. The full documentation for our API can be found here:
You’ll need a SeatGeek account and an API key to get started:
Step 1: Request an API key here: https://seatgeek.com/account/develop
Step 2: Find some SeatGeek performers
Step 3: Make a request using SG performer IDs
The API takes a geolocation parameter, an arbitrary list of performers, and a wide array of filtering parameters.