Fetching Behance User Projects with Cursor-Based Pagination
Learn how to paginate a Behance user's project list using the API's cursor-based next value, with example curl commands, rate-limit details and common mistakes to avoid.
17 Sept 2026, 01:22 UTC

To retrieve all of a user's public projects from Behance, follow the API's cursor-based pagination by using the next value returned in each response as the page parameter for the subsequent request.
How cursor-based pagination works
The Behance v2 endpoint https://www.behance.net/v2/users/{username}/projects returns a JSON object containing a projects array and a next field. The next value is an opaque cursor that must be supplied as the page query parameter in the next request to obtain the following batch of projects. This mechanism avoids the pitfalls of simple numeric pagination (duplicates or missing items) when the underlying data set changes between requests.
Worked example
Replace YOUR_API_KEY with a valid Behance client ID and exampleuser with the target username. The commands can be run in any terminal with network access and curl installed; no special privileges are required beyond the ability to make outbound HTTPS calls.
# First request – fetch the first page (adjust per_page as needed)
curl "https://www.behance.net/v2/users/exampleuser/projects?client_id=YOUR_API_KEY&per_page=20"
# Extract the "next" value from the JSON response (e.g., using jq)
# NEXT=$(curl -s "https://www.behance.net/v2/users/exampleuser/projects?client_id=YOUR_API_KEY&per_page=20" | jq -r .next)
# Subsequent request – use the cursor as the page parameter
curl "https://www.behance.net/v2/users/exampleuser/projects?client_id=YOUR_API_KEY&page=$NEXT&per_page=20"
Repeat the second step, updating the page parameter with the next value from each response, until the next field is null or absent, indicating the final page.
Limits and common pitfalls
- Rate limiting: Each API key is limited to 150 requests per hour. Exceeding this limit returns HTTP 429; your client should back off and retry later.
- Missing
client_id: Omitting the authentication parameter results in a 401 response. - Using outdated v1 endpoints: The v1 API does not support cursor-based pagination and may return incomplete data.
- Treating the cursor as a page number: The
nextvalue is not a simple increment; using it as a numeric page leads to duplicate or missing projects. - Private or draft projects: These require OAuth scopes (e.g.,
private_projects) that most public applications do not request; without proper authorization they are not returned.
Verification and practical checks
To confirm that your implementation works correctly:
- Make an initial request with a small
per_page(e.g., 5) and verify the JSON contains aprojectsarray and anextfield. - Use the returned
nextvalue as thepageparameter for a second request. - Ensure the
projectsarrays from the two responses do not overlap (compare project IDs). - Continue paginating until
nextis null; count the total number of unique project IDs. - Monitor for HTTP 429 responses; if observed, implement a retry-after delay according to the
Retry-Afterheader.
These steps provide a practical way to validate that cursor-based pagination is being followed correctly and that you remain within the API's rate limits.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.