Skip to main content
jimk
Active Contributor II
Active Contributor II
June 4, 2025
Solved

Enrich 500k to 1 million + profiles via API (Rate limit help)

  • June 4, 2025
  • 7 replies
  • 253 views

Hi everyone,

We’ve built an integration with Klaviyo that enriches profiles and want to batch enrich between 500,000 to over 1 million profiles. We’re aware of Klaviyo’s API rate limits and want to ensure we follow best practices to avoid throttling or request failures. A few questions:

  1. What’s the most scalable and compliant way to enrich a high volume of profiles via the API?

  2. Are there preferred patterns (e.g., batching, queuing, or time-based spacing) that Klaviyo recommends?

  3. Do larger partners ever get rate limit adjustments for bulk data use cases like this?

Any guidance, references, or tips from others who’ve done large-scale enrichment would be much appreciated.

Thanks in advance!

    Best answer by ross_hopkins

    Hi ​@jimk 

    Thanks for asking the community!

    Have you read through the documentation here?: https://developers.klaviyo.com/en/docs/rate_limits_and_error_handling

    The endpoint you would use is documented here: https://developers.klaviyo.com/en/reference/bulk_import_profiles (where the endpoint is 

    https://a.klaviyo.com/api/profile-bulk-import-jobs).

    In summary, that endpoint allows you to make 10,000 requests an hour. The response received will include headers that will inform you how close you are to hitting the rate limit, meaning whatever process you develop could pause depending on what is returned - 

    • RateLimit–Limit: The number of requests allowed per time period
    • RateLimit-Remaining: The approximate number of requests remaining within a window
    • RateLimit-Reset: Number of seconds remaining before current window resets

    Does that help you get started with planning out the enrichment?

    Thanks,

    Ross

    7 replies

    ross_hopkins
    Expert Problem Solver II
    2025 Champion
    June 5, 2025

    Hi ​@jimk 

    Thanks for asking the community!

    Have you read through the documentation here?: https://developers.klaviyo.com/en/docs/rate_limits_and_error_handling

    The endpoint you would use is documented here: https://developers.klaviyo.com/en/reference/bulk_import_profiles (where the endpoint is 

    https://a.klaviyo.com/api/profile-bulk-import-jobs).

    In summary, that endpoint allows you to make 10,000 requests an hour. The response received will include headers that will inform you how close you are to hitting the rate limit, meaning whatever process you develop could pause depending on what is returned - 

    • RateLimit–Limit: The number of requests allowed per time period
    • RateLimit-Remaining: The approximate number of requests remaining within a window
    • RateLimit-Reset: Number of seconds remaining before current window resets

    Does that help you get started with planning out the enrichment?

    Thanks,

    Ross

    Contributor IV
    June 5, 2025

    Does this https://a.klaviyo.com/api/profile-bulk-import-jobs allow us to update the custom properties of already existing profiles in bulk too?   

     

    jimk
    Active Contributor II
    jimkAuthor
    Active Contributor II
    June 5, 2025

    Thanks ​@ross_hopkins.  I should have let ​@kenw232 ask the question originally.  He’s our lead engineer and knows more about our current and future use-cases and needs.  I’ll butt out now.  Thanks guys. 

    Cheers…...Jim

    Segmentninja.io - High-margin, high-CLV retention and acquisition only, using proven Fortune 500 segmentation and predictive AI models.
    anthony_laneve
    Klaviyo Employee
    Klaviyo Employee
    June 5, 2025

    Hi ​@jimk and ​@kenw232

    Great questions! Have you looked into importing the data via SFTP? It’s not an API, but you should be able to upload files programmatically and it should easily handle the number of profile updates you’re talking about. 

    Klaviyo can process up to 6 million profile updates per hour without list subscriptions or up to 1 million per hour with list subscriptions. 

    https://developers.klaviyo.com/en/docs/sftp_import_tool

     

    Thanks, and have a great rest of your day

    Anthony 

     

    jimk
    Active Contributor II
    jimkAuthor
    Active Contributor II
    June 5, 2025

    Thank you ​@anthony_laneve.  Super helpful.  Real-time and automoted is ideal and preferred, but this might be an option.  ​@kenw232 will this work and with custom properties?  We’d have to aggregate all data into a CSV from our preprossessing routines.  Let’s discuss offline.   Thanks again Anthony! 

    Segmentninja.io - High-margin, high-CLV retention and acquisition only, using proven Fortune 500 segmentation and predictive AI models.
    ross_hopkins
    Expert Problem Solver II
    2025 Champion
    June 6, 2025

    Hi ​@jimk ​@kenw232 

    Confirming that you can set custom properties via that API endpoint (https://developers.klaviyo.com/en/reference/bulk_import_profiles).

    Expand the Attributes object and scroll down to Properties. That’s where you can test out how custom profile properties are to be added to the payload.

    Thanks,

    Ross

    jimk
    Active Contributor II
    jimkAuthor
    Active Contributor II
    June 6, 2025

    Terrific.  Thanks for verifying ​@ross_hopkins.  Very helpful

    Best….Jim

    Segmentninja.io - High-margin, high-CLV retention and acquisition only, using proven Fortune 500 segmentation and predictive AI models.