# How to Integrate Retool with Ubersuggest

- Tool: Retool
- Difficulty: Beginner
- Time required: 15 minutes
- Last updated: April 2026

## TL;DR

Connect Retool to Ubersuggest using a REST API Resource with your Ubersuggest API key in the Authorization header. Query keyword suggestions, search volume, and SEO difficulty scores, then build a keyword research dashboard for content teams that consolidates data without switching between browser tabs.

## Build a Keyword Research Dashboard in Retool with Ubersuggest

Content teams conducting keyword research typically switch between multiple browser tabs — Ubersuggest for suggestions, spreadsheets for tracking, and internal tools for content calendars. Retool solves this by pulling Ubersuggest data directly into a unified internal dashboard where keyword research, content planning, and assignment can happen in one place.

Ubersuggest's API provides access to its core keyword intelligence data: search volume by month, SEO difficulty scores, paid difficulty scores, cost-per-click estimates, and keyword suggestions based on seed keywords or competitor domains. The API uses simple API key authentication, making it one of the more straightforward SEO tool integrations to set up in Retool.

Note that Ubersuggest's API is a premium feature available on paid plans. Free accounts have limited or no API access. The API documentation is minimal — most API users rely on community documentation and experimentation to discover endpoints. This tutorial covers the confirmed, working endpoints for keyword research use cases.

## Before you start

- An Ubersuggest paid account (Individual, Business, or Enterprise plan) with API access enabled
- An Ubersuggest API key obtained from your account settings
- A Retool account with permission to create new Resources
- Basic familiarity with Retool's query editor and Table component

## Step-by-step guide

### 1. Obtain your Ubersuggest API key

Log into your Ubersuggest account at app.neilpatel.com. Navigate to your account settings by clicking on your profile icon in the top-right corner, then selecting 'Profile' or 'Account Settings'. Look for the API or Developer section within your account settings. Your API key is displayed here — it is typically a long alphanumeric string. Copy the API key. Note that Ubersuggest API access is only available on paid plans (Individual plan and above). If you are on a free account, you will not see an API key section, and you will need to upgrade before proceeding. The API key is tied to your account's credit limits — each API call consumes credits from your monthly allocation, with limits varying by plan.

**Expected result:** You have an Ubersuggest API key copied and ready to configure in Retool.

### 2. Create a REST API Resource for Ubersuggest

In Retool, navigate to the Resources tab and click 'Create New' → 'REST API'. Set the Base URL to 'https://app.neilpatel.com/api'. This is the base endpoint for Ubersuggest's API — specific endpoints will be added as paths in individual queries. Under the Headers section, click 'Add header' and add: key 'Authorization' with value your API key (the Ubersuggest API uses the API key directly in the Authorization header, without a 'Bearer ' prefix for most endpoints). Add a second header: 'Content-Type' with value 'application/json'. Name the resource 'Ubersuggest' and click 'Save'. Note that Ubersuggest's API documentation is limited — the API is intended primarily for internal use and was opened to users somewhat informally. If the base URL or authentication format has changed, consult the Ubersuggest community forums for the latest confirmed endpoint documentation.

```
{
  "Base URL": "https://app.neilpatel.com/api",
  "Headers": {
    "Authorization": "{{ retoolContext.configVars.UBERSUGGEST_API_KEY }}",
    "Content-Type": "application/json"
  }
}
```

**Expected result:** The Ubersuggest REST API Resource is saved in Retool. A test query returns a 200 response with keyword data.

### 3. Query keyword suggestions and SEO metrics

Create a new query in your Retool app using the Ubersuggest resource. Set the method to GET and the path to '/get_suggestions'. The primary query parameter is 'keyword' — set this to {{ keywordInput.value }} so users can type a seed keyword and run the query. Add a 'country' parameter to specify the target country for search volume data (e.g., 'us', 'gb', 'au'). The response includes an array of keyword suggestions, each with fields for: keyword text, search volume (search_volume), SEO difficulty score (seo_difficulty), paid difficulty (paid_difficulty), and cost per click (cpc). Run the query with a test keyword to verify the response structure. The response may be paginated or limited by your plan's credit allocation.

```
// GET /get_suggestions
// Query parameters:
// keyword: {{ keywordInput.value }}
// country: {{ countrySelect.value || 'us' }}
// language_code: {{ languageSelect.value || 'en' }}
```

**Expected result:** The query returns a JSON response containing an array of keyword suggestions with search volume, difficulty scores, and CPC values.

### 4. Transform and display keyword data in a sortable Table

Add a transformer to the keyword suggestions query to normalize the response data for the Retool Table component. Ubersuggest's response may nest the keyword array under a 'keywords' or 'suggestions' key depending on the endpoint version. The transformer should extract the array, sort by search volume descending, and format numeric fields for readability. Format the CPC as a dollar amount and create a color-coded difficulty category based on the SEO difficulty score: 0-30 is 'Easy', 31-60 is 'Medium', 61-100 is 'Hard'. Add a Table component to the canvas and bind its Data source to {{ getKeywords.data }}. Enable column sorting so users can re-sort by any metric. Add a Number Input component for users to filter by maximum difficulty score.

```
// Transformer: normalize Ubersuggest keyword response
const raw = data;
// Handle different response structures
const keywords = raw.keywords || raw.suggestions || raw.results || [];

return keywords
  .filter(kw => kw.search_volume > 0)
  .map(kw => {
    const difficulty = kw.seo_difficulty || 0;
    let difficultyLabel;
    if (difficulty <= 30) difficultyLabel = 'Easy';
    else if (difficulty <= 60) difficultyLabel = 'Medium';
    else difficultyLabel = 'Hard';

    return {
      keyword: kw.keyword,
      volume: kw.search_volume || 0,
      seo_difficulty: difficulty,
      difficulty_label: difficultyLabel,
      paid_difficulty: kw.paid_difficulty || 0,
      cpc: kw.cpc ? `$${parseFloat(kw.cpc).toFixed(2)}` : '$0.00',
      opportunity_score: Math.round((kw.search_volume || 0) / Math.max(difficulty, 1))
    };
  })
  .sort((a, b) => b.volume - a.volume);
```

**Expected result:** The Table displays keyword suggestions sorted by search volume with columns for keyword text, volume, SEO difficulty with label, CPC, and opportunity score. Users can click column headers to sort.

### 5. Add domain keyword analysis queries

Create a second query to pull keyword data for a specific domain rather than a seed keyword. Use the '/get_keywords_for_url' or '/get_domain_info' endpoint (exact endpoint name may vary — test with your API key). The domain endpoint accepts a 'url' parameter instead of 'keyword'. This allows users to enter a competitor domain and see what keywords that domain ranks for in organic search. Build a second tab or section in your Retool app for the domain analysis view. Add a TextInput for the domain URL input and a second Table component bound to this query's transformer output. Add a comparison view where users can see both their target keyword list and the competitor domain's keywords side by side, identifying gaps and opportunities.

```
// GET /get_keywords_for_url
// Query parameters:
// url: {{ domainInput.value }}
// country: {{ countrySelect.value || 'us' }}

// Transformer for domain keywords:
const keywords = data.keywords || data.results || [];
return keywords.map(kw => ({
  keyword: kw.keyword,
  position: kw.position || kw.rank || 'N/A',
  volume: kw.search_volume || 0,
  traffic_share: kw.estimated_visits || 0,
  seo_difficulty: kw.seo_difficulty || 0,
  cpc: kw.cpc ? `$${parseFloat(kw.cpc).toFixed(2)}` : '$0.00'
}));
```

**Expected result:** A second Table in the Retool app displays keywords that the queried domain ranks for, including their search position, volume, and difficulty scores.

## Best practices

- Store your Ubersuggest API key in Retool configuration variables marked as secret to prevent it from appearing in exported app JSON or query logs
- Set keyword queries to run manually (triggered by a button) rather than automatically on component changes — this conserves API credits and prevents unnecessary calls
- Cache query results in Retool's query caching settings for at least 24 hours — keyword metrics change slowly and do not need to be fetched on every page load
- Add input validation to keyword TextInput components to prevent empty queries — an empty keyword parameter wastes an API credit without returning useful data
- Build a keyword list management feature using Retool Database to save researched keywords — this reduces the need to re-query Ubersuggest for keywords you have already analyzed
- Include a country selector component in your dashboard — keyword volume and difficulty vary significantly by country, and US data may not reflect your actual target market

## Use cases

### Build a keyword research and prioritization panel

Pull keyword suggestions for multiple seed keywords into a single Retool table. Display search volume, SEO difficulty, and CPC side by side. Let content teams sort by volume or filter by difficulty threshold to identify quick-win keywords. Add a button to export selected keywords to a Google Sheet or internal database.

Prompt example:

```
Build a Retool keyword research panel where I type a seed keyword, click 'Research', and see a table of keyword suggestions with search volume, SEO difficulty score, and CPC, sorted by volume descending. Include a filter for max difficulty score.
```

### Create a competitor keyword gap analysis tool

Enter a competitor domain to pull their top organic keywords from Ubersuggest. Compare these against your own site's ranking keywords stored in an internal database. Build a Retool app that highlights keywords the competitor ranks for but your site does not, providing a prioritized list of content opportunities.

Prompt example:

```
Create a Retool competitor analysis tool that queries a competitor domain's top keywords from Ubersuggest, shows search volume and their ranking position, and highlights keywords where SEO difficulty is under 40 as high-priority content opportunities.
```

### Monitor keyword difficulty trends for target keywords

Build a Retool app that stores a list of target keywords in a database and periodically queries Ubersuggest for current SEO difficulty and volume data. Display trend charts showing how difficulty has changed over time and alert the content team when high-priority keywords have dropped in difficulty.

Prompt example:

```
Build a Retool keyword monitoring dashboard that reads target keywords from a database table, queries Ubersuggest for current difficulty and volume, shows a chart of difficulty over time, and flags any keywords where difficulty dropped below 50.
```

## Troubleshooting

### API returns 401 Unauthorized or 'Invalid API key' error

Cause: The API key is not correctly passed in the Authorization header, or the account does not have API access enabled. Ubersuggest's API key format and header name have changed in some plan configurations.

Solution: Try alternative header formats: some Ubersuggest API versions use 'X-Api-Key' as the header name instead of 'Authorization'. Also try passing the key as a query parameter named 'apiKey' or 'api_key'. Check your Ubersuggest account dashboard to confirm API access is included in your current plan.

```
// Try these alternative auth configurations:
// Option 1: X-Api-Key header
// X-Api-Key: your_api_key

// Option 2: Query parameter
// GET /get_suggestions?keyword=example&apiKey=your_api_key
```

### Query returns data for some keywords but empty results for others

Cause: Ubersuggest does not have data for all keywords in all countries. Short-tail keywords and English US searches have the most data. Niche or highly specific long-tail keywords may return empty suggestion arrays.

Solution: Broaden the seed keyword to a shorter, more general term. Try changing the country parameter to 'us' to verify data exists for the keyword globally before filtering to specific regions. Add a null-check in your transformer to handle empty keyword arrays gracefully: return (keywords || []).map(...).

```
// Handle empty response gracefully in transformer
const keywords = data?.keywords || data?.suggestions || [];
if (!keywords || keywords.length === 0) {
  return [{ keyword: 'No results found', volume: 0, seo_difficulty: 0 }];
}
return keywords.map(kw => ({ /* mapping */ }));
```

### API returns 429 Too Many Requests or credit limit error

Cause: Ubersuggest API calls consume credits from your monthly allocation. Queries run automatically on component changes in Retool can quickly exhaust credits if the app re-queries on every keystroke.

Solution: Set the keyword query to run 'Manually' (not automatically) in the query settings. Add a 'Search' button that triggers the query on click rather than auto-running on input change. Add query result caching in Retool's query settings to avoid re-fetching the same keyword data within a session.

## Frequently asked questions

### Does Ubersuggest have a public API?

Ubersuggest does have an API, but it is not prominently documented or officially supported in the same way as tools like SEMrush or Ahrefs. API access is available on paid plans but the documentation is minimal. The API endpoints function and are used by Ubersuggest's own web interface, making them discoverable through browser developer tools or community documentation.

### How many API credits does each Ubersuggest query consume?

Ubersuggest API credit consumption varies by plan and endpoint. Keyword suggestion queries typically consume 1-2 credits per request. Domain analysis queries may consume more. Check your current credit balance in your Ubersuggest account dashboard and review the plan documentation for exact rates per endpoint.

### Can I query Ubersuggest data for multiple keywords at once?

Ubersuggest's API typically handles one keyword per request for suggestion queries. To research multiple keywords, you would need to run multiple queries sequentially. In Retool, you can use a Workflow to loop through a list of keywords and query each one, storing results in a Retool Database table for the dashboard to display.

### How current is Ubersuggest's keyword data?

Ubersuggest updates its keyword database monthly. The search volume data you receive reflects monthly averages, typically updated within the last 30-60 days. For real-time search volume, you would need to use the Google Ads API or Google Search Console API instead, which Retool also supports.

### Can I use Ubersuggest API data in Retool without a paid plan?

No. Ubersuggest API access requires a paid Individual, Business, or Enterprise plan. Free accounts cannot generate API keys. If you need basic keyword research capabilities without a paid SEO tool subscription, consider querying Google Search Console's API, which provides actual click and impression data for keywords your site already ranks for.

---

Source: https://www.rapidevelopers.com/retool-integrations/ubersuggest
© RapidDev — https://www.rapidevelopers.com/retool-integrations/ubersuggest
