Solutions Exercism
Analysez une page des solutions communautaires d'un exercice Exercism en JSON structuré avec, pour chaque solution publiée, l'auteur, le langage, les étoiles, le nombre d'itérations et la pagination.
Utilisation de l'API
Ajoutez &scraper=exercism-solutions à une requête Crawling API. Encodez en URL l'URL cible dans le paramètre url. La liste est paginée (24 par page) ; passez une requête ?page=N sur l'URL cible pour les pages suivantes.
curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
--data-urlencode 'url=https://exercism.org/tracks/ruby/exercises/two-fer/solutions' \
--data-urlencode 'scraper=exercism-solutions' -Gfrom crawlbase import CrawlingAPI
api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
'https://exercism.org/tracks/ruby/exercises/two-fer/solutions',
{'scraper': 'exercism-solutions'}
)
import json
data = json.loads(res['body'])const { CrawlingAPI } = require('crawlbase');
const api = new CrawlingAPI({ token: 'YOUR_TOKEN' });
const res = await api.get(
'https://exercism.org/tracks/ruby/exercises/two-fer/solutions',
{ scraper: 'exercism-solutions' }
);
const data = JSON.parse(res.body);require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')
res = api.get('https://exercism.org/tracks/ruby/exercises/two-fer/solutions', scraper: 'exercism-solutions')
data = JSON.parse(res.body)Exemple d'URL en entrée
N'importe quelle page des solutions communautaires d'un exercice Exercism fonctionne dans le paramètre url - la page située à /tracks/<track>/exercises/<slug>/solutions, éventuellement avec une requête ?page=N. Par exemple :
https://exercism.org/tracks/ruby/exercises/two-fer/solutions
https://exercism.org/tracks/go/exercises/hello-world/solutions
https://exercism.org/tracks/python/exercises/leap/solutions?page=2Structure de la réponse
Corps de la réponse JSON. Les types de champs peuvent être null lorsque la page source omet la valeur.
URL de la page de liste des solutions qui a été scrapée.
Contexte de la piste extrait de la première ligne de solution.
Titre affiché de la piste (par exemple
Ruby).URL de l'icône de la piste.
Contexte de l'exercice extrait de la première ligne de solution.
Titre affiché de l'exercice.
URL de l'icône de l'exercice.
Numéro de page de la liste actuellement renvoyée (à partir de 1).
Nombre total de pages de solutions pour l'exercice.
Nombre total de solutions publiées pour l'exercice.
Nombre de solutions renvoyées dans
solutions sur cette page.Solutions publiées sur cette page, dans l'ordre de la liste.
UUID de la solution Exercism.
Auteur de la solution.
Identifiant de l'auteur (nom d'utilisateur Exercism).
URL de l'avatar de l'auteur.
Badge flair de l'auteur (par exemple
insider), ou null lorsqu'il n'y en a pas.Langage de programmation de la solution.
Nombre d'étoiles de la solution.
Nombre de commentaires sur la solution.
Nombre de vues de la solution.
Nombre d'itérations soumises par l'auteur.
Lignes de code de la solution, ou null lorsque non renseigné.
True lorsque la solution n'est plus à jour par rapport à l'exercice actuel.
Date de publication de la solution (ISO 8601), ou null lorsqu'elle est absente.
Court aperçu de code de la solution, ou null lorsqu'il est absent.
URL publique de la page de la solution unique, ou null lorsqu'elle est absente.
Exemple de réponse
{
"url": "https://exercism.org/tracks/ruby/exercises/two-fer/solutions",
"track": {
"title": "Ruby",
"iconUrl": "https://assets.exercism.org/tracks/ruby.svg"
},
"exercise": {
"title": "Two Fer",
"iconUrl": "https://assets.exercism.org/exercises/two-fer.svg"
},
"page": 1,
"totalPages": 412,
"totalCount": 9876,
"solutionCount": 2,
"solutions": [
{
"uuid": "b3f2c1a0-9d8e-4f7a-8c6b-1a2b3c4d5e6f",
"author": {
"handle": "neilnorthrop",
"avatarUrl": "https://avatars.exercism.org/u/12345",
"flair": "insider"
},
"language": "ruby",
"numStars": 42,
"numComments": 3,
"numViews": 1280,
"numIterations": 2,
"numLoc": 3,
"isOutOfDate": false,
"publishedAt": "2026-05-18T14:03:27Z",
"snippet": "def two_fer(name = \"you\")\n \"One for #{name}, one for me.\"\nend",
"url": "https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop"
},
{
"uuid": "c4e3d2b1-0a9f-4e8b-9d7c-2b3c4d5e6f70",
"author": {
"handle": "erikschierboom",
"avatarUrl": "https://avatars.exercism.org/u/67890",
"flair": null
},
"language": "ruby",
"numStars": 17,
"numComments": 0,
"numViews": 640,
"numIterations": 1,
"numLoc": 4,
"isOutOfDate": false,
"publishedAt": "2026-04-02T09:11:50Z",
"snippet": "def two_fer(name = \"you\")\n format(\"One for %s, one for me.\", name)\nend",
"url": "https://exercism.org/tracks/ruby/exercises/two-fer/solutions/erikschierboom"
}
]
}