LoveLive! School Idol API
If you're a developer and you would like to get the cards of the game in a convenient format, we provide a public REST API to get the cards, events, idols, and more!
We'd love to talk to you! If you're creating or you plan to create something that uses our API, contact us so we can help you, give you feedback, ideas, and even promote it when you're ready.
If you would like to get more data that is not available in the current API, contact us and we will see what we can do for you ;)
If you would like to contribute, see the contribute page.
Note that since we provide this service for free, unfortunately, we cannot 100% guarantee its uptime. However, we believe our architecture is reliable enough to be used in a production environment.
Technical Notes
It returns JSON objects that you can easily parse and use in your own tools or services, using any programming language or library. It enables CORS, so you can use it in Javascript as well.
Missing or null fields
The guaranteed JSON fields are marked with . You can consider that any other field might be null. The site is purposely very permissive in that matter, since we might not have all the information or users might not want to fill everything. We recommend you to make sure that your service works no matter what's missing.
Pagination
Paginated endpoints give you the total number of elements in count. If you want to know the total number of pages, you can just divide it by the page size, which is 10 by default and can be specified with the page_size parameter.
Ordering
When you use the ordering parameter, you can specify multiple ordering fields using commas: ?ordering=rarity,attribute, and you can reverse the order using -: ?ordering=-rarity. Most endpoints allow to order by any field. Some endpoints also allow you to randomize the results with ?ordering=random.
Fields and Parameters types
-
Stringmay contain unicode characters, such as Japanese characters but not only. -
URLare strings that always start withhttp:// -
Datemay be formatted differently, see each field and parameter individually. -
Boolean values in JSON are represented using
trueandfalse, but boolean values given as parameters in your requests are expected to beTrueorFalse. -
Localized stringwill return different strings depending on the HTTP headerAccept-Language. The list of accepted languages is here. Default language isen.
Endpoints & Methods
School Idol Festival Game
School Idol Tomodachi Community
Authentication
API Updates
- On Twitter: @schoolidolapi
- Mailing list: schoolidolapi@googlegroups.com
Both get the exact same updates every time something changes on the API. I reply to replies/DMs/emails on both.
If you use the API, please follow one of them to make sure your service doesn't break when we change something.
If you want to follow every single thing about the development behind the API and School Idol Tomodachi, you can also follow the GitHub repository to see all the commits. I also keep the bug tracker updated with the upcoming features and bugs.
See also: API Changelog
General advice when using the API
-
Add slashes
/at the end of all your API calls to avoid a redirection every time -
Don't ask to expand data if you don't need it, it makes everything much slower
-
Don't ask for a big
page_sizehoping you'll get all you need. Big pages take a lot of time to generate and the server just kinds of stops to generate your page which makes the site very slow for everybody else. Instead, get pages one at a time and try to find a number of elements per page that suits your needs. In general, a good number of elements is 1.5 x what you can see in one view of your application. For instance, if most users see 10 cards when they load the list, ask for 15 every time. -
If you have to get a very long long list of elements and then manually search through it in your code, you're doing it wrong. We provide lots of filters, so use them! If you need to filter/search through something very specific and can't find how to do it, contact me, I might update the API for you.
-
In general, if you have to do a
foror awhilein which you get data from the API (except for pagination), you're doing it wrong. There's probably a way to get the data you need without spamming with queries (and you'll just get kicked out at some point). Example:- If you do something like:
- get all the owned cards in the API
- for each owned card, get the card in the API
- You should do something like: get all the owned cards with the parameter
expand_card
- If you do something like:
-
If there's anything you're not sure about, or if you just want to know if everything is fine before publishing your code, talk to me! I'll always take the time to help.

