crawlbaseDocs
Anmelden

API-Nutzung

Fügen Sie &scraper=exercism-solution zu einem Crawling API-Request hinzu. URL-kodieren Sie die Ziel-URL im url-Parameter.

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop' \
  --data-urlencode 'scraper=exercism-solution' -G
from crawlbase import CrawlingAPI

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
    'https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop',
    {'scraper': 'exercism-solution'}
)

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/neilnorthrop',
  { scraper: 'exercism-solution' }
);
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/neilnorthrop', scraper: 'exercism-solution')
data = JSON.parse(res.body)

Beispiel-Eingabe-URL

Im url-Parameter funktioniert jede einzelne veröffentlichte Exercism-Lösungsseite - die Seite unter /tracks/<track>/exercises/<slug>/solutions/<handle>. Zum Beispiel:

https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop
https://exercism.org/tracks/go/exercises/hello-world/solutions/erikschierboom

Response-Struktur

JSON-Response-Body. Feldtypen können null sein, wenn die Quellseite den Wert nicht enthält.

url
string
URL der gescrapten Lösungsseite.
track
object
Track, zu dem die Lösung gehört.
track.slug
string | null
Track-Slug (zum Beispiel ruby).
track.title
string | null
Anzeigetitel des Tracks (zum Beispiel Ruby).
track.iconUrl
string | null
URL des Track-Symbols.
exercise
object
Übung, zu der die Lösung gehört.
exercise.slug
string | null
Übungs-Slug (zum Beispiel two-fer).
exercise.type
string | null
Übungstyp (zum Beispiel practice oder concept).
exercise.title
string | null
Anzeigetitel der Übung.
exercise.iconUrl
string | null
URL des Übungssymbols.
exercise.difficulty
string | null
Schwierigkeitsbezeichnung (zum Beispiel easy, medium, hard).
exercise.blurb
string | null
Kurze Übungsbeschreibung.
author
object
Autor der Lösung.
author.handle
string | null
Autoren-Handle (Exercism-Benutzername).
language
string | null
Programmiersprache der Lösung.
indentSize
integer | null
Vom Autor verwendete Editor-Einrückungsgröße, oder null, wenn nicht angegeben.
numStars
integer | null
Anzahl der Sterne der Lösung.
numIterations
integer
Anzahl der Iterationen im iterations-Array.
isOutOfDate
boolean
True, wenn die Lösung gegenüber der aktuellen Übung veraltet ist.
publishedIterationIdx
integer | null
Index (idx) der veröffentlichten Iteration, oder null, wenn keine vorhanden ist.
publishedAt
string | null
Veröffentlichungszeit der Lösung (ISO 8601), oder null, wenn nicht vorhanden.
iterations
array
Iterationsverlauf der Lösung, älteste zuerst.
iterations[].idx
integer | null
Iterationsindex (1-basiert).
iterations[].status
string | null
Analysestatus der Iteration (zum Beispiel no_automated_feedback).
iterations[].testsStatus
string | null
Testlaufstatus der Iteration (zum Beispiel passed).
iterations[].submissionMethod
string | null
Art der Einreichung der Iteration (zum Beispiel cli oder api).
iterations[].createdAt
string | null
Erstellungszeit der Iteration (ISO 8601), oder null, wenn nicht vorhanden.
iterations[].isPublished
boolean
True, wenn diese Iteration die veröffentlichte ist.
iterations[].isLatest
boolean
True, wenn diese Iteration die neueste ist.
code
string | null
Vollständiger Quellcode der veröffentlichten Lösung, oder null, wenn nicht vorhanden.

Beispiel-Response

{
  "url": "https://exercism.org/tracks/ruby/exercises/two-fer/solutions/neilnorthrop",
  "track": {
    "slug": "ruby",
    "title": "Ruby",
    "iconUrl": "https://assets.exercism.org/tracks/ruby.svg"
  },
  "exercise": {
    "slug": "two-fer",
    "type": "practice",
    "title": "Two Fer",
    "iconUrl": "https://assets.exercism.org/exercises/two-fer.svg",
    "difficulty": "easy",
    "blurb": "Create a sentence of the form \"One for X, one for me.\""
  },
  "author": {
    "handle": "neilnorthrop"
  },
  "language": "ruby",
  "indentSize": 2,
  "numStars": 42,
  "numIterations": 2,
  "isOutOfDate": false,
  "publishedIterationIdx": 2,
  "publishedAt": "2026-05-18T14:03:27Z",
  "iterations": [
    {
      "idx": 1,
      "status": "no_automated_feedback",
      "testsStatus": "passed",
      "submissionMethod": "cli",
      "createdAt": "2026-05-17T22:41:03Z",
      "isPublished": false,
      "isLatest": false
    },
    {
      "idx": 2,
      "status": "no_automated_feedback",
      "testsStatus": "passed",
      "submissionMethod": "cli",
      "createdAt": "2026-05-18T14:03:27Z",
      "isPublished": true,
      "isLatest": true
    }
  ],
  "code": "def two_fer(name = \"you\")\n  \"One for #{name}, one for me.\"\nend"
}