> SpecStream is the live web data engine for teams and agents. This is the Markdown copy of https://specstream.ai/docs/integrations/adalo. Every page, with what SpecStream does and costs: https://specstream.ai/llms.txt

# Adalo

Give an Adalo app live web search with one custom action. A user types a question, the action sends it to SpecStream's Search API with your key, and the app shows the answer with the page it was read from.

[SpecStream for AdaloAgent frameworks & builders](https://specstream.ai/integrations/adalo.md)

## What you need

-   An Adalo plan that includes custom actions. Adalo's help center lists them on its paid plans.
-   A SpecStream key. [Get your key](https://specstream.ai/workspace/search?utm_source=adalo&utm_medium=howto) on the Search API screen of your SpecStream workspace. New accounts start with $10 of credit, no card.

1.  1

    ## 1. Add a question box and a button

    On a screen, add an **Input** for the question and a **Button** labeled Search. Add a second **Input**, or a **Text** component, where the answer will show.

2.  2

    ## 2. Create the custom action

    Select the button. In its **Click Actions**, click **Add Action**, hover over **Custom Action** and choose **New Custom Action**. Give it a **Name** such as `SpecStream search`. The type you choose (Create, Update or Delete) is only a label inside Adalo and does not change the call.

    Set the request as below. Put your key in place of `YOUR_SPECSTREAM_KEY`, with the word Bearer and a space in front of it:

    Custom Action setup

    ```text
    Method:  POST
    URL:     https://api.specstream.ai/v1/web-search
    Header:  Content-Type   application/json
    Header:  Authorization  Bearer YOUR_SPECSTREAM_KEY
    ```

3.  3

    ## 3. Send the question

    Click **+Add Input**, choose **Text**, name it `question`, and enter an example value to test with. Paste this into **JSON Body**, then use the Magic Text button to replace the words in quotes after `q` with the `question` input:

    JSON Body

    ```json
    {
      "q": "What is the tallest building in Europe?",
      "num": 5
    }
    ```

4.  4

    ## 4. Test it and add the outputs

    Click **Run Test Request**, then **Show Full Response**. Everything in the reply sits inside `data`. Click **+Add Item** and add these four outputs, then click **Save Custom Action**:

    Outputs

    ```text
    data > answer > value     Text        the answer, as the page prints it
    data > answer > page      Text        the page it was read from
    data > answer > seen_at   Date/Time   when SpecStream read that page
    data > price_usd          Number      what the call cost
    ```

5.  5

    ## 5. Show the answer

    On the button, set the custom action's `question` input to the Magic Text of the question Input. Under the custom action, add an action that uses its outputs: change the answer Input's value to the `value` output, or add an **Update** action that saves `value` and `page` to the Logged In User or another record and show them in Text components.

    Open the preview, type a question and tap Search. The answer and its page show in a few seconds.

## Why the outputs fit Adalo

Adalo's custom actions take Text, Number and Date/Time outputs, and no arrays. The Search API puts the answer, its page and its read time in one object, `data.answer`, so each one maps to a single output with no tool in between.

A call takes a few seconds, well inside the 30 seconds Adalo gives a custom action. `num` sets how many search results come back; 5 keeps the reply small, and any number up to 10 costs the same.

## When the answer is empty

`answer` is empty when no result prints a value that answers the question, for example a question that asks for a list. Ask one question with one answer per tap, and show a short message when the `value` output is empty.

## Read a page in the app

To show the text of a page, such as the `page` an answer came from, add a second custom action. Set **Method** to `POST`, **URL** to `https://api.specstream.ai/jina`, the same `Authorization` header, and a header `Accept` with the value `application/json`. Add a Text input named `page` and send it in the JSON Body:

## Read a page: the outputs

Replace the address in quotes with the `page` input through Magic Text, run the test, and add `title` and `content` from `data` as Text outputs. `content` holds the page's main text, without its menus and ads.

Each page read is one Extract API page at $0.80 per 1,000 pages, and a page with no text is not charged.

## Who pays

Adalo sends the key in the action's header with every call, so every user of the app spends from your SpecStream balance. In [Agents & API](https://specstream.ai/workspace/agents?tab=keys&utm_source=adalo) in your workspace, give the key a total spending limit. Once the key reaches it, calls stop with 403 until you raise it.

Custom actions belong to your Adalo team, so editing this one changes every app that uses it.

## If something doesn't work

| What you see | What to do |
| --- | --- |
| The test fails with 401 | The key is missing, mistyped or revoked. Check that the `Authorization` header reads Bearer, a space, then the key. |
| The test fails with 402 | The balance is empty. Add balance in your SpecStream workspace. |
| The test fails with 403 | The key cannot spend, or it reached its limit. Use a key from the Search API screen, or raise its limit under **Agents & API**. |
| The test fails with 503 | The account used its calls for the minute. Tap again after the seconds in `Retry-After`. Nothing is charged. |
| The outputs are gone after an edit | Adalo clears outputs when you test again. Click **Run Test Request**, open **Show Full Response**, add them again and save. |
| `value` is empty | No page printed one answer to the question. Ask a narrower question. |

## Cost

Each tap is one Search API call at $5 per 1,000 searches of up to 10 results. It comes out of your balance, with no quote and no approval, and a call that returns no results costs nothing. The `price_usd` output shows what each call cost. New accounts start with $10 of credit, no card.

## Remove

Delete the custom action from the button. Revoking the key under **Agents & API** stops every app that holds it at once. Questions go to [support@specstream.ai](mailto:support@specstream.ai).

## More

[SpecStream for Adalo](https://specstream.ai/integrations/adalo.md) covers what it does in Adalo on one page. Every other tool has its guide in [Connect your tools](https://specstream.ai/docs/integrations.md). You see the most a request can cost before it starts, and the matches are paid from your balance. [Billing](https://specstream.ai/docs/billing.md) has the details. For help, email [support@specstream.ai](mailto:support@specstream.ai).
