Not possible/Seek alternatives

:seedling:

Duolingo

Language learning app.

Unfortunately there’s no official API, and no access to Duolingo user information without requiring your Duolingo username and password, which we don’t do.

191 votes

Tagged as Integration

Created 19 December 2015 by Belle Cooper

Moved into Not possible/Seek alternatives 25 September 2019

  • Sign in to comment and vote. Sign in by email
  • avatar

    Would seriously love this :)

    27 July 2016
  • avatar

    Would love to see tracking for things like how many lessons, in which languages, and what levels achieved. Thanks!

    22 January 2017
  • avatar

    The Duolingo thing would be ace! Out of my 6 big goals that I am tracking this is the one I am failing at the most.

    02 April 2017
  • avatar

    Would be interesting in a “learning” part of tracking.

    07 April 2017
  • avatar

    I would love this, even if it were just a “met Duolingo XP goal for the day” sort of tracking.

    22 April 2017
  • avatar

    Although there’s no official API, I had a look and given a username anyone can grab some data via the website about how much XP you’ve earned on recent days. So theoretically this one is feasible :)

    06 May 2017
  • avatar

    Beeminder.com is using the Duolingo API to retrieve xp so I am sure it is possible.

    15 May 2017
  • avatar

    I spoke to one of the founders of Beeminder a few months ago and he told me they’re using the method Josh mentioned above, since there is no public API for Duolingo.

    16 May 2017
  • avatar

    I’m looking forward to this, especially now that I’m traveling again.

    16 May 2017
  • avatar

    If its any help, there’s a Python library which demonstrates using the unofficial Duolingo “API”: https://github.com/KartikTalwar/Duolingo.

    07 August 2017
  • avatar

    Thanks Peter! That’s the one I have starred actually (and synced to my bookmarks via https://larder.io which is an amazing app) ☺

    07 August 2017
  • avatar

    Well played, Josh. Well played. ;)

    08 August 2017
  • avatar

    I’m sure there is a link between my learning of a foreign language and other aspects of my life. So it would be interesting !

    21 August 2017
  • avatar

    Would love this integration! 💖

    16 May 2019
  • avatar

    Would love to see this!

    Is there really no way that this can be done, given the wealth of information that is publicly available just by having someone’s Duolingo username?

    I am about to start trialling Exist and this would be massive for me. Might even have a play around with it if the rest of the app works for me.

    19 November 2019
  • avatar

    It’s actually not possible to get public information on Duolingo users any more, even unofficially — the integration listed previously doesn’t work. But if you can find some other means of doing it yourself, you could certainly hook it up with Exist via our API, for example to add tags for languages learned each day.

    19 November 2019
  • avatar

    Beeminder continues to have a Duolingo integration. Maybe you can check with them again!

    19 November 2019
  • avatar

    Do you know if they require you to provide your Duolingo username and password?

    20 November 2019
  • avatar

    The unofficial routes are definitely still there, as far as I can see. Just go to https://duome.eu/{username}

    For example: https://duome.eu/Luis

    No credentials required.

    It will need a scrape of the data but it’s in the HTML there. I’m not the most experience but I’ll have a hack around at the weekend. If I get something working, I’ll share it with you.

    20 November 2019
  • avatar

    P.S. I’d personally be satisfied even just with number of XP earned per day, so that’s where I’ll start. I’m not so familiar with the Exist platform yet having just signed up - I’ll try to think of the right place /way to record that with the Exist API.

    20 November 2019
  • avatar

    They just ask for a username, so probably there is still some public access to the total XP per language https://www.dropbox.com/s/blbt80t1kqzzh4e/Screenshot%202019-11-20%20at%2022.22.00.png?dl=0 thank you

    20 November 2019
  • avatar

    Aha, I guess they changed the domain and that library didn’t get updated. Thanks!

    20 November 2019
  • avatar

    Thanks for showing me that trick! I had no idea there was a way to get the profile info that way.

    The only problem with using unofficial channels is that they can break @ any time w/o any notice.

    Now that i know there’s an easy way to scrape my daily duo exp points, i’ll probably write my own Exist integration. I’d rather DIY than come to rely on something “official” that could just break w/o any notice in 6 months. At least when it’s DIY, there’s a limited blast radius and everybody (read: me) in the blast radius understands that the nature of the integration was fleeting to begin with.

    21 November 2019
  • avatar

    For what’s it’s worth, the Beeminder/Duolingo integration (most probably through unofficial channels) has been running smoothly for over 4 years (my French goal was started on January 2015!) :)

    21 November 2019
  • avatar

    No worries!

    Yeah, I agree it’s not the most robust. I will play around with it anyway as a personal experiment and then - if it ends up being useful - I’ll share with the Exist team/others who might assess risk vs reward as being positive… :shrug:

    22 November 2019
  • avatar

    Hi! Thanks to Markos for pointing me here! Looks like it was in May that Duolingo’s API changed and our trick – http://beeminder.com/changelog#3006 – is to have a Beeminder user on Duolingo and use its cookies to fetch users’ data.

    25 November 2019
  • avatar

    Aha! You only need any authenticated user, not the specific user. Thanks for the tip Daniel!

    25 November 2019
  • avatar

    I have gone and built a small thing to do just this.

    https://github.com/kquinsland/exist-duolingo-bridge

    configure your duo user name + local timezone and provide an exist.io API token and run daily :).

    29 December 2019
  • avatar

    Lovely, thanks! You might want to consider mentioning it in the developer forum along with the other community integrations and scripts. Also, as we don’t have an attribute for “words learned” or similar, how are you writing this data to Exist?

    30 December 2019
  • avatar

    @a person: Great stuff, thanks a lot! @Josh: For my personal custom Habitica integration I’m hijacking the value “commits” to mirror XP, as I don’t need this attribute otherwise and expierence can be considered as a kind of commitment. But as you said, let’s discuss in the dev forum :)

    30 December 2019
  • avatar

    Also, as we don’t have an attribute for “words learned” or similar, how are you writing this data to Exist?

    I have a custom attribute for this. I don’t care about the words learned, only experience points gained in a given time period. Since I am only using duolingo to keep some of my secondary school foreign language from going stale, i have a threshold of 10 XP/day.

    So long as i have more than 10 XP/day, i apply the “practiced duolingo” tag to that day.

    If you guys did want to open up an API that would allow people to create the custom metrics, i could see the value in using that for people that are more serious Duo users.

    That API could be pretty simple, actually… since it’s all just time series data under the hood and the bulk of what makes it “meaningful” to people is the labels. Give developers a way to tell you that they’ll now have a cumulative integer,date-time tuple the ID for that data stream should be associated with the “duolingo/$language” string and when you display the metrics, use the word “experience points” to label the integers.

    But for my purposes, i only care about the “did i practice today or not” question.

    31 December 2019
  • 31 December 2019
  • avatar

    Awesome! thanks for sharing this. I’ve just been waiting for the update @Josh referred to above. As soon as that is live, I plan to grab your repo and try to make a pull request for record XP as a custom attribute.

    Thanks for the hard work!

    06 January