crawlbaseDocs
Se connecter
Les exercices premium ne renvoient que des métadonnées

Un exercice dont isPremium vaut true conserve ses champs d'identité - id, titre, difficulté, tags de thème - mais l'énoncé et les compteurs d'engagement ne font pas partie de la page : description, descriptionHtml et les compteurs reviennent donc vides.

Utilisation de l'API

Ajoutez &scraper=leetcode-problem à une requête Crawling API. Encodez en URL l'URL cible dans le paramètre url.

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://leetcode.com/problems/two-sum/' \
  --data-urlencode 'scraper=leetcode-problem' -G
from crawlbase import CrawlingAPI

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
    'https://leetcode.com/problems/two-sum/',
    {'scraper': 'leetcode-problem'}
)

import json
data = json.loads(res['body'])
const { CrawlingAPI } = require('crawlbase');
const api = new CrawlingAPI({ token: 'YOUR_TOKEN' });

const res = await api.get(
  'https://leetcode.com/problems/two-sum/',
  { scraper: 'leetcode-problem' }
);
const data = JSON.parse(res.body);
require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')

res = api.get('https://leetcode.com/problems/two-sum/', scraper: 'leetcode-problem')
data = JSON.parse(res.body)

Exemple d'URL en entrée

N'importe quelle page d'exercice LeetCode fonctionne dans le paramètre url - la page située à /problems/<slug>. Par exemple :

https://leetcode.com/problems/two-sum/
https://leetcode.com/problems/add-two-numbers/
https://leetcode.com/problems/longest-substring-without-repeating-characters/

Structure 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
string
URL de la page d'exercice analysée.
id
string | null
Numéro de l'exercice tel qu'affiché sur la page, renvoyé sous forme de chaîne.
internalId
string | null
Identifiant interne de la question chez LeetCode. Généralement égal à id, mais les deux divergent sur les exercices anciens.
title
string | null
Titre affiché de l'exercice.
titleSlug
string | null
Slug d'URL de l'exercice.
difficulty
string | null
Libellé de difficulté - Easy, Medium ou Hard.
category
string | null
Catégorie de l'exercice, par exemple Algorithms ou Database.
isPremium
boolean
Indique si l'exercice nécessite un abonnement LeetCode.
descriptionHtml
string | null
Énoncé de l'exercice en HTML, avec le balisage d'origine préservé pour que les exemples, les contraintes et le code inline restent intacts.
description
string | null
Énoncé de l'exercice aplati en texte brut.
likes
integer | null
Nombre de votes positifs sur l'exercice.
dislikes
integer | null
Nombre de votes négatifs sur l'exercice.
acceptedCount
integer | null
Nombre de soumissions acceptées.
submissionCount
integer | null
Nombre total de soumissions.
acceptanceRate
string | null
Taux de réussite tel affiché, signe pourcentage inclus.
commentCount
integer | null
Nombre de commentaires dans la discussion de l'exercice.
topicTags
array
Tags d'algorithmes et de structures de données appliqués à l'exercice.
topicTags[].name
string | null
Nom affiché du tag.
topicTags[].slug
string | null
Slug d'URL du tag.
hints
array
Indices publiés avec l'exercice, sous forme de tableau de chaînes en texte brut.
exampleTestcases
array
Entrées des cas de test par défaut, sous forme de tableau de chaînes. Chaque chaîne conserve les sauts de ligne qui séparent ses arguments.
codeSnippets
array
Squelettes de code que LeetCode fournit pour l'exercice.
codeSnippets[].language
string | null
Nom affiché du langage, par exemple Python3.
codeSnippets[].languageSlug
string | null
Slug du langage, par exemple python3.
codeSnippets[].code
string | null
Le squelette lui-même, avec son indentation d'origine.
similarQuestions
array
Exercices que LeetCode signale comme liés.
similarQuestions[].title
string | null
Titre de l'exercice lié.
similarQuestions[].titleSlug
string | null
Slug d'URL de l'exercice lié.
similarQuestions[].url
string | null
URL absolue de l'exercice lié.
similarQuestions[].difficulty
string | null
Libellé de difficulté de l'exercice lié.
similarQuestions[].isPremium
boolean
Indique si l'exercice lié nécessite un abonnement.
officialSolution
object
État de la solution rédigée par LeetCode pour cet exercice.
officialSolution.available
boolean
Indique s'il existe une solution officielle.
officialSolution.isFree
boolean
Indique si la solution officielle est lisible sans abonnement.
officialSolution.hasVideo
boolean
Indique si la solution officielle comprend une explication en vidéo.
solutionsUrl
string | null
URL absolue de l'onglet des solutions de la communauté pour cet exercice.

Exemple de réponse

{
  "url": "https://leetcode.com/problems/two-sum/",
  "id": "1",
  "internalId": "1",
  "title": "Two Sum",
  "titleSlug": "two-sum",
  "difficulty": "Easy",
  "category": "Algorithms",
  "isPremium": false,
  "descriptionHtml": "

You are given an array of integers nums and an integer target, return indices of t...", "description": "You are given an array of integers nums and an integer target, return indices of the two numbers such that they add up t...", "likes": 69478, "dislikes": 2592, "acceptedCount": 22929319, "submissionCount": 39569455, "acceptanceRate": "57.9%", "commentCount": 3490, "topicTags": [ { "name": "Array", "slug": "array" }, { "name": "Hash Table", "slug": "hash-table" } ], "hints": [ "A really brute force way would be to search for all possible pairs of numbers but that would be too slow. Again, it's best to try out brute force solutions just for completeness. It is from these brute force solutions that you can come up with optimizations." ], "exampleTestcases": [ "[2,7,11,15]\n9", "[3,2,4]\n6", "[3,3]\n6" ], "codeSnippets": [ { "language": "Python3", "languageSlug": "python3", "code": "class Solution:\n def twoSum(self, nums: List[int], target: int) -> List[int]:\n " }, { "language": "JavaScript", "languageSlug": "javascript", "code": "/**\n * @param {number[]} nums\n * @param {number} target\n * @return {number[]}\n */\nvar twoSum = function(nums, target) {\n \n};" } ], "similarQuestions": [ { "title": "3Sum", "titleSlug": "3sum", "url": "https://leetcode.com/problems/3sum/", "difficulty": "Medium", "isPremium": false }, { "title": "4Sum", "titleSlug": "4sum", "url": "https://leetcode.com/problems/4sum/", "difficulty": "Medium", "isPremium": false } ], "officialSolution": { "available": true, "isFree": true, "hasVideo": true }, "solutionsUrl": "https://leetcode.com/problems/two-sum/solutions/" }