API limitations on Searching, Filtering & Exporting data

Occasional Participant

API limitations on Searching, Filtering & Exporting data

In attempting to develop a custom CRM using the Liferay web hosting platform and Constant Contact (and snycing the two), we are encountering the issues below:


We would like a Contact List as a table with columns that are searchable and sortable, links to jump between “pages” of content, and an export feature.


contacts wireframe.jpg


The API limits responses to 500 results at most. If there are additional records, the results include a “next” parameter you can use to request up to 500 more results. The API results do not include a “previous” parameter if there are results “before” the ones you’re viewing. The API also only supports searching contacts by email address.


In practice, this means that only the “current” 500 contacts could be searched, filtered, or exported.  

I’m not sure why the API has these seemingly arbitrary limitations. You can do complex searches and move forward or backward through pages of results (or even jump to the first or last page) on constantcontact.com.


Possible workarounds that we're considering to avoid the API’s limitations on searching, filtering, and exporting data include:


  1. Store contact data in the Liferay database and retrieve it from this database to display in the Contact Manager.

    Con: Because we will need to update contact data in the Liferay database *and* in the Constant Contact database, there is a chance that the two data sources could get out of sync, especially if people are still able to manage contact data on constantcontact.com.
  2. Request all of the “pages” of contact data and store it locally (in the browser’s memory or local storage) while the user is logged into Liferay.

    Con: The API limits users to 10,000 requests per day (unless you are a Constant Contact Partner). With 19,239 active contacts in Constant Contact, we would need to request data 39 times to load the contact list. This means that the data can only be loaded up to 256 times each day. 


Thanks for your assistance.


Hello TomG12,


You are doing quite the undertaking in creating your own CRM. You do have the limitations pretty well outlined and explained. I'd like to chime in a bit and see if I can help with some insight from our end.


The v2 API was designed to be able to move data between Constant Contact and your application whether it be a website where you have a sign-up form, a custom CRM, or anything in between. You are definitely looking to create something quite advanced and some of the features you are looking for were not something we were looking at designing in this version of our API. We are developing a v3 API and I will make sure these features are something we look at for this new version.


In the meantime I think your best option is the first one you mentioned. You would want to bring the contacts information through the API and store it in a database where you can then manipulate it in whatever way is needed by you or your users at that moment. Perhaps include a modified tag in your side of the database and at the end of the day compare it to our modified date. In the event that those two modified dates are different then you can send an update back to Constant Contact only for those contacts that had their data changed.


This would limit the amount of API calls needed to keep the data synced. This is of course based on the assumption that your users do not log in to the Constant Contact website to manipulate contacts as well.


I'm happy to continue discussing any aspects of this either here on the forums or if you prefer privacy you can email us at webservices@constantcontact.com.

Jimmy D.
Tier II API Support Engineer
Developer Portal

View API documentation, code samples, get your API key.

Visit Page