# Intercom API 2.0 - Pagination

**URL:** <https://community.parabola.io/t/intercom-api-2-0-pagination/717>\
**Category:** Ask a question\
**Tags:** Using-APIs\
**Created:** [June 20, 2020, 5:49pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717 "2020-06-20T17:49:59Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dan\_Valentine](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/dan_valentine/32/494_2.png) [@Dan\_Valentine](https://community.parabola.io/u/Dan_Valentine)\
**Post date:** [June 20, 2020, 5:49pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/1 "2020-06-20T17:49:59Z")

</div>

I am connecting to [intercom’s 2.0 API](https://developers.intercom.com/intercom-api-reference/reference#pagination-cursor). I am running into an issue with pagination only returning one page of data. If I don’t use a the courser key “starting\_after” than I will get duplicate results on each page, instead of getting unique results on each page. The way I am using the “start\_after” key, I am only getting 1 page of results, even if I request to fetch more pages.

This is the request…  
I wish I could view the request being sent when it doesn’t fail, but when I intentionally make it fail so I can get the request, this is what is shown (I don’t see any pagination parameters, but maybe that’s because it’s failing)

{  
“data”: {  
“query”: {  
“field”: “custom\_attributes.stripe\_plan”,  
“operator”: “~”,  
“value”: “clinic”  
}  
},  
“headers”: {  
“Authorization”: “Bearer ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890=”,  
“Content-Type”: “application/json”  
},  
“method”: “POST”,  
“params”: {},  
“url”: "[https://api.intercom.io/contacts/search](https://api.intercom.io/contacts/search)  
}

Any ideas on what I am doing wrong?

 ![Screenshot 2020-06-20 at 1.48.58 PM](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/f92cff81ba673765d5d426793a535506ce8bbdd7.png)  
 ![Screenshot 2020-06-20 at 1.22.14 PM](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/8ccfe620abea4ba614c4638a23bf99516ca62233.png) ![Screenshot 2020-06-20 at 1.21.23 PM](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/ab661a6977ce774f7ae692947d9e221452bdf61d.png)

---

<div class="post-metadata">

**Author:** ![Dan\_Valentine](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/dan_valentine/32/494_2.png) [@Dan\_Valentine](https://community.parabola.io/u/Dan_Valentine)\
**Post date:** [June 22, 2020, 5:29pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/2 "2020-06-22T17:29:02Z")

</div>

Looks like there is a discussion about this on intercom…[https://community.intercom.com/t/api-2-0-contacts-pagination-contains-duplicate-values/1664/3](https://community.intercom.com/t/api-2-0-contacts-pagination-contains-duplicate-values/1664/3)

---

<div class="post-metadata">

**Author:** ![brian](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/brian/32/11_2.png) [@brian](https://community.parabola.io/u/brian)\
**Post date:** [June 22, 2020, 7:36pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/3 "2020-06-22T19:36:17Z")

</div>

Hey Dan,

You need to change your Cursor Key to `next.starting_after` to access that key.

If that doesn’t work, then try setting your pagination key to `starting_after` in your API Import. Its unclear to me what the pagination key should be.

---

<div class="post-metadata">

**Author:** ![Dan\_Valentine](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/dan_valentine/32/494_2.png) [@Dan\_Valentine](https://community.parabola.io/u/Dan_Valentine)\
**Post date:** [June 23, 2020, 3:40am UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/4 "2020-06-23T03:40:48Z")

</div>

Hey Brian,

That makes sense…At this point, any Cursor Key that I use returns 1 page of results. This the very first (It’s an API Import) part of a series of chain of events. Something else that I notice is if I put page limit to 150, I am still getting 50 results…[https://api.intercom.io/contacts/search?per\_page=150](https://api.intercom.io/contacts/search?per_page=150)

Not specifying a key returns duplicate pages…

Two other articles on intercom that provide ideas on what else to try…There are more than just these threads…  
\*[https://community.intercom.com/t/list-conversations-page-size/825/2](https://community.intercom.com/t/list-conversations-page-size/825/2)

- [https://community.intercom.com/t/contact-search-api-pagination-broken/1761](https://community.intercom.com/t/contact-search-api-pagination-broken/1761)

Any other ideas on what I can try? If we can get this working, we’ll probably be between 6000 to 8000 credits per month.

Other things I’ve tried

 ![Screenshot 2020-06-22 at 11.00.40 PM](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/1f0b0442b7b3dfa66e3dc86f74e6dbf6a37e846e.png) ![Screenshot 2020-06-22 at 11.00.10 PM](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/3a0157dcf7696c8678defcb4aed4648ad69b81d1.png)

---

<div class="post-metadata">

**Author:** ![alex](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/alex/32/37_2.png) [@alex](https://community.parabola.io/u/alex)\
**Post date:** [June 23, 2020, 5:51am UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/5 "2020-06-23T05:51:26Z")

</div>

Hey Dan, took a look at this for you. I was able to get it to work for the regular contacts API with these settings:

![image](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/7b8bbe39e80e1f41ecabbc121d9db369e4bd19bc.png)

 ![image](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/b9764b50f1eebd76eefe0fedd03c30d74085bde7.png)

Feel free to replace the `Max Pages to Fetch` with whatever number you want. When you’re ready to view the whole data set, you can also add in a `Top Level Key`:  
 ![image](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/11c883e59fa736270ecc8329e2a7ec7edf1dadff.png)

However, I’m having trouble getting it to work with the POST to `/contacts/search`. As best I can tell, Intercom seems to want the pagination data to come through in the body. However, we don’t support that today. Just in case you’re curious, that would look like this (but again we don’t support this today):

 ![image](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/1X/444a8beca47507f072a2c141ea378ed8556b48be.png)

Are you able to pull in enough contacts via the all contacts endpoint to not need to do the search?

---

<div class="post-metadata">

**Author:** ![brian](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/brian/32/11_2.png) [@brian](https://community.parabola.io/u/brian)\
**Post date:** [June 24, 2020, 5:18pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/6 "2020-06-24T17:18:01Z")

</div>

Hey all,

Confirming what Alex found, which is that you need to send the pagination settings in the body of the request (which is odd). Right now, that is not possible in Parabola.

As suggested, you will need to pull in all contacts, not using the search endpoint, and then filter them down using a Row Filter in Parabola to mimic the behavior of the search endpoint.

Best,  
Brian

---

<div class="post-metadata">

**Author:** ![Dan\_Valentine](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/dan_valentine/32/494_2.png) [@Dan\_Valentine](https://community.parabola.io/u/Dan_Valentine)\
**Post date:** [June 24, 2020, 5:39pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/7 "2020-06-24T17:39:37Z")

</div>

We have over 700k contacts, so naturally I was trying to slice and dice per certain data criteria… with these limits we would burn through unnecessary credits when I only need to run 5k to 50k through a workflow, and it would take over an hour to process each request, which isn’t terrible, it’s more the economics I am dancing around.

Putting the per page in the body worked! So now I am getting 150 results, but I can’t seem to get the cursor working, I tried “starting\_after”:"{pages.next.starting\_after}", but it seems to be sending that verbetem instead of filling it with the variable. Like brian just interated, this is likely what isn’t possible at the moment:(

---

<div class="post-metadata">

**Author:** ![Dan\_Valentine](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/dan_valentine/32/494_2.png) [@Dan\_Valentine](https://community.parabola.io/u/Dan_Valentine)\
**Post date:** [June 30, 2020, 2:15pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/8 "2020-06-30T14:15:38Z")

</div>

So I have to run it at 100 per page or I hit limitation errors. But now when I run to get all, it seems to be capping at [100k records](https://community.parabola.io/t/what-are-parabolas-performance-limits/79)…

Is there any way to have this limitation of 1000 pages increased? I am trying to do get all 8541 pages 🥲: since I can’t do pagination in the body.

---

<div class="post-metadata">

**Author:** ![brian](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/brian/32/11_2.png) [@brian](https://community.parabola.io/u/brian)\
**Post date:** [July 6, 2020, 5:21pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/9 "2020-07-06T17:21:03Z")

</div>

That is a lot of pages! Unfortunately I don’t have a way of bumping that page limit up. Is the 100 items per page limit the upper limit of their API?

---

<div class="post-metadata">

**Author:** ![Geoff\_Bowers](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/geoff_bowers/32/93_2.png) [@Geoff\_Bowers](https://community.parabola.io/u/Geoff_Bowers)\
**Post date:** [April 7, 2021, 5:28am UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/10 "2021-04-07T05:28:09Z")

</div>

> [@brian](#):
>
> Confirming what Alex found, which is that you need to send the pagination settings in the body of the request (which is odd). Right now, that is not possible in Parabola.

Has there been any change here with respect to paginating results out of Intercom API?

More specifically getting an outcome with the following pagination requirements for the Intercom API v2.3 Contacts search:

[https://developers.intercom.com/intercom-api-reference/reference#pagination-cursor](https://developers.intercom.com/intercom-api-reference/reference#pagination-cursor)

I can’t seem to get Intercom to behave well with this interface ☹

---

<div class="post-metadata">

**Author:** ![daniel](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/daniel/32/732_2.png) [@daniel](https://community.parabola.io/u/daniel)\
**Post date:** [April 7, 2021, 10:38pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/11 "2021-04-07T22:38:23Z")

</div>

Hey @Geoff_Bowers,

Not yet! Intercom still requires the pagination settings to be sent within the body of your POST request.

By default, Parabola appends the pagination settings as a URL Parameter. It can not be dynamically merged into the query of your search.

---

<div class="post-metadata">

**Author:** ![Maxime\_Favier](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/maxime_favier/32/1627_2.png) [@Maxime\_Favier](https://community.parabola.io/u/Maxime_Favier)\
**Post date:** [October 1, 2021, 3:56pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/12 "2021-10-01T15:56:48Z")

</div>

Hi!

I’m trying to work out a solution with Intercom API v2.3 (retrieve all contacts, hence many pages) via cursor pagination ([Intercom doc](https://developers.intercom.com/intercom-api-reference/reference#pagination-cursor)).  
When checking this thread I observe that earlier messages show screenshots from a previous interface of Parabola.  
Also, in Parabola’s [help center](https://parabola.io/integration/api#pull-from-an-api) the explanation about cursor pagination is with the previous interface.

How does the new one function - and how to adapt it to Intercom v2.3?

 ![Capture d’écran 2021-10-01 à 17.52.42](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/2X/e/eebf360629b8adddc6db4f3d658f068b5a350864.png)

Many thanks,

Maxime

---

<div class="post-metadata">

**Author:** ![daniel](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/daniel/32/732_2.png) [@daniel](https://community.parabola.io/u/daniel)\
**Post date:** [October 2, 2021, 12:07am UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/13 "2021-10-02T00:07:20Z")

</div>

Hi @Maxime_Favier, welcome to the community 👋

Using the `Cursor` pagination style is the correct method. Start by setting your **Cursor key** to `starting_after`. Then set **Cursor path in response** to `pages.next.starting_after`.

 ![image](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/2X/5/5c8a63be7672e4f170d02d7e9193c1a76ade38f9.png)  
  
  
Since previous examples indicate a page size of `150`, divide your total contacts by `150` to determine your **Maximum pages to fetch**.

For example, if you have 30k contacts in Intercom, divide that by 150 to get `200` pages to fetch.

Let me know if that helps!

---

<div class="post-metadata">

**Author:** ![Maxime\_Favier](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/maxime_favier/32/1627_2.png) [@Maxime\_Favier](https://community.parabola.io/u/Maxime_Favier)\
**Post date:** [October 2, 2021, 1:39pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/14 "2021-10-02T13:39:10Z")

</div>

Hi @daniel

It works smooth. Thanks a lot 👍👍

Maxime

---

<div class="post-metadata">

**Author:** ![Tessa\_T](https://avatars.discourse-cdn.com/v4/letter/t/e79b87/32.png) [@Tessa\_T](https://community.parabola.io/u/Tessa_T)\
**Post date:** [March 18, 2025, 7:39pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/15 "2025-03-18T19:39:59Z")

</div>

@brian I can’t seem to get pagination working for the companies endpoint. Set it up the same as contacts, based on the above, but it only returns 15 results. Here’s a snippet of the response:

“pages”: {  
“type”: “pages”,  
“next”: “[https://api.intercom.io/companies?per\_page=15&page=2](https://api.intercom.io/companies?per_page=15&page=2)”,  
“page”: 1,  
“per\_page”: 15,  
“total\_pages”: 55  
},  
“total\_count”: 821  
}

---

<div class="post-metadata">

**Author:** ![daniel](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/daniel/32/732_2.png) [@daniel](https://community.parabola.io/u/daniel)\
**Post date:** [March 19, 2025, 5:38pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/16 "2025-03-19T17:38:36Z")

</div>

Hi @Tessa_T 👋

Good question! Based on that API response, the page key and value pagination style would work well in this instance.

Try configuring your settings to match the image below:

 ![image](https://us1.discourse-cdn.com/flex020/uploads/parabola/original/2X/8/84e4b94d57a7f9ed7ce0b0be9e4f2ba7a28a266f.png)

Let me know if you have any questions!

---

<div class="post-metadata">

**Author:** ![Tessa\_T](https://avatars.discourse-cdn.com/v4/letter/t/e79b87/32.png) [@Tessa\_T](https://community.parabola.io/u/Tessa_T)\
**Post date:** [March 20, 2025, 6:06pm UTC](https://community.parabola.io/t/intercom-api-2-0-pagination/717/17 "2025-03-20T18:06:07Z")

</div>

Thanks @daniel — that worked!
