Make.com Integration
Step-by-step guide to using the Tuberalytics API with Make.com's HTTP module. No coding required — build automated YouTube research workflows entirely in Make.
Prerequisites
- A Tuberalytics account with an API key (generate one at API Keys)
- A Make.com account (free tier works for testing)
Setting Up Authentication
Every Tuberalytics API call requires a Bearer token. Configure it once and reuse it across all HTTP modules in your scenario.
- Add an HTTP > Make a request module to your scenario
- Click Add a header under the Headers section
- Set the header:
- Name:
Authorization - Value:
Bearer sk_live_your_api_key
- Name:
- Also add a second header:
- Name:
Content-Type - Value:
application/json
- Name:
Tip: Store your API key in a Make.com data store or connection variable so you don't hard-code it in every module.
Example 1: Search for Channels
Search for YouTube channels in a niche and parse the results.
Step 1: Configure the HTTP Module
- Add an HTTP > Make a request module
- Configure it:
- URL:
https://tuberalytics.com/api/v1/channels/search?q=ai+automation - Method:
GET - Headers: Authorization and Content-Type (as above)
- URL:
- Click OK and Run once to test
Step 2: Parse the Response
The module returns a JSON response. Access the data using Make's dot notation:
data[]— array of channel objectsdata[].id— channel ID (use this for follow-up API calls)data[].title— channel namedata[].subscriber_count— subscriber countmeta.total_count— total matching channelsmeta.total_pages— number of pages available
Example Response
{
"data": [
{
"id": 170,
"title": "Nick Saraev",
"youtube_id": "UCxxxx",
"subscriber_count": 250000,
"video_count": 180
}
],
"meta": {
"current_page": 1,
"per_page": 25,
"total_pages": 3,
"total_count": 62
}
}
Example 2: Trigger a Channel Analysis
Analyze a channel using Tuberalytics AI. This is an async operation — the API returns 202 Accepted immediately and processes the analysis in the background.
This example assumes you already have a channel ID — either from a search result (Example 1), or from adding a channel to tracking via
POST /api/v1/me/channels.
Step 1: Send the Analysis Request
- Add an HTTP > Make a request module
- Configure it:
- URL:
https://tuberalytics.com/api/v1/channels/{{channel_id}}/analyze— replace{{channel_id}}with the channel's ID from a previous module (e.g., mapdata[].idfrom a search result) - Method:
POST - Headers: Authorization and Content-Type
- Body: (leave empty — no body required)
- URL:
- Run the module
Response
{
"data": {
"status": "pending",
"analysis_id": 456,
"message": "Channel analysis queued."
}
}
Step 2: Wait for Completion
You have two options:
Option A: Webhook trigger. Set up a Webhook endpoint and use Make's Webhooks > Custom webhook module as the scenario trigger. Tuberalytics sends a channel.analysis.completed event when the analysis finishes.
Option B: Polling. Add a Sleep module (wait 30–60 seconds), then use an HTTP module to fetch the channel profile at GET /api/v1/channels/170/profile. If the profile exists, the analysis is complete.
Recommended: Use webhooks for real-time notifications. Polling works but wastes scenario operations.
Example 3: Multi-Step Scenario
Build a complete workflow: search channels in a niche, get details for each one, and log the results to Google Sheets.
Scenario Flow
- HTTP > Make a request — Search channels:
GET /api/v1/channels/search?q=productivity&per_page=10 - Iterator — Loop over
data[]array from the search results - HTTP > Make a request — Get channel details:
GET /api/v1/channels/{{item.id}} - HTTP > Make a request — Get channel profile:
GET /api/v1/channels/{{item.id}}/profile - Google Sheets > Add a row — Write channel data to a spreadsheet
Configuration Details
Iterator module:
- Set the Array field to
datafrom the search response
Channel details module:
- Set the URL to
https://tuberalytics.com/api/v1/channels/{{2.id}}(where2is the Iterator's bundle number)
Google Sheets module:
- Map fields: channel title, subscriber count, content style, title formulas, etc.
Working with Pagination
To process all pages of results, use a loop pattern.
Pattern: Pagination Loop
- Set variable —
page= 1 - HTTP > Make a request —
GET /api/v1/channels/search?q=ai+automation&page={{page}}&per_page=100 - Iterator — Loop over
data[] - Your processing module(s) — Do something with each channel
- Set variable —
page={{page + 1}} - Router — Check if
page<=meta.total_pages. If yes, loop back to step 2. If no, end.
Tip: Set
per_page=100(the maximum) to minimize the number of API calls. This helps stay within rate limits.
Error Handling
Rate Limit Errors (429)
If you exceed the rate limit, the API returns HTTP 429. Handle this gracefully:
- Right-click the HTTP module and select Add error handler
- Add a Sleep module in the error handler path
- Set the sleep duration to 60 seconds (rate limits reset per minute)
- Add a Resume directive after the sleep to retry the request
Other Errors
| Status | Meaning | Action |
|---|---|---|
| 401 | Invalid API key | Check your Authorization header |
| 404 | Resource not found | Verify the channel/niche ID exists |
| 422 | Validation error | Check the error field in the response |
| 429 | Rate limit exceeded | Wait and retry (see above) |
| 500 | Server error | Retry after a short delay |
Tips and Best Practices
- Schedule scenarios wisely. Running every 15 minutes is usually sufficient for monitoring. Avoid running every minute — it burns through API quota quickly.
- Use data stores to cache channel IDs and avoid redundant lookups. Store the channel ID after the first search, then reference it directly in subsequent runs.
- Batch operations. When processing multiple channels, use
per_page=100and process all results before fetching the next page. - Use webhooks as triggers. Instead of polling, create a webhook endpoint and use Make's Custom webhook trigger. This is more efficient and gives you real-time notifications.
- Map only what you need. When connecting to Google Sheets or other destinations, only map the fields you actually need. This makes scenarios easier to maintain.
- Test with Run Once first. Always test individual modules with "Run once" before enabling the full scenario schedule.