Paginate / Loop with nextCursor. Am I supposed to “count” and offset, when they’re providing a “next” variable?

In the response header, I get the count and the limit, but I don’t understand how to loop.

        "body": {
            "list": {
                "meta": {
                    "totalCount": 426,
                    "limit": 100,
                    "nextCursor": "?limit=100&hasMoreElements=true&soIndex=426&poIndex=100&partnerId=10001078279&sellerId=101058904&createdStartDate=2023-07-12T05:03:59.721Z&createdEndDate=2023-07-19T05:03:59.721Z&shipNodeType=SellerFulfilled"
                "elements": {
                    "order": [
                            "purchaseOrderId": "108820170097219",                

  • n8n Version0.234.1:
  • Database (default: POSTGRES):
  • Running n8n via: Caprover :

Hi @unicornParty, it looks like your API provides all information required to query additional pages in the body.list.meta.nextCursor field.

You should be able to do something like this:

This workflow appends the body.list.meta.nextCursor field when present, otherwise it uses an empty string instead. I don’t have access to the Walmart API, but perhaps you can give this a go with your own credentials?

I’ve also removed what seems to be a token from the workflow you have shared, to be safe you might want to rotate/recreate the secrets you have used in this workflow.

1 Like

thank you so much for responding.

In your example, how will the next request be queried?
I “SET” the nextCursor “IF” next is not empty.

I already SET the base URL, so I was trying to combine SET URL and SET NEXT to loop…

In your example, how will the next request be queried?

Hi @unicornParty, the example HTTP Request uses a URL expression of{{ $json?.body?.list?.meta?.nextCursor ? $json.body.list.meta.nextCursor : "" }}

The snippet inside the curly braces $json?.body?.list?.meta?.nextCursor ? $json.body.list.meta.nextCursor : "" uses the ternary operator. So on the first execution (when there is no json.body.list.meta.nextCursor field) the request would simply go to, but when the field is populated it would be attached to this URL.

I couldn’t test this myself so just used this as a dummy URL, but now revisiting your original workflow you probably want to use an expression like this instead as I’ve missed the /v3/orders part before:{{ $json?.body?.list?.meta?.nextCursor ? $json.body.list.meta.nextCursor : "" }}

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.