# Search Benzinga financial news by ticker with Dappier's API

Dappier's API searches Benzinga's financial news and stock coverage for a company, ticker or topic. With `search_algorithm` set to `most_recent`, the latest stories come first. Each query costs $0.02 and draws on a Prepaid credits balance held by a registered agent credential, so you send `POST https://agents.dappier.com/zcj/ucftdnuecanm/zeroclick/v2/search?data_model_id=dm_01jmxn1a9tem8bq1nzbzjck8c4` with a `query` and `Authorization: Bearer <token>`.

## At a glance

- **Endpoint:** `POST https://agents.dappier.com/zcj/ucftdnuecanm/zeroclick/v2/search?data_model_id=dm_01jmxn1a9tem8bq1nzbzjck8c4`. The `data_model_id` query parameter selects Benzinga.
- **Body:** `query` (required: a company, ticker, topic or URL), `search_algorithm` (`most_recent`, `semantic`, `most_recent_semantic` or `trending`), `similarity_top_k` (articles to return), `page`, `num_results`
- **Price per query:** $0.02
- **Payment:** the call draws on a Prepaid credits balance. You buy that balance with an agent credential over x402, MPP or card. No Dappier API key is needed.
- **Response:** JSON with `status` and `response.results`. Each result carries `title`, `summary`, `url`, `pubdate`, `site` and related fields.
- **Credit minimums:** $0.01 per purchase on a wallet rail, $0.50 by card
- **Full purchase flow:** [the buyer skill](https://agents.dappier.com/zcj/ucftdnuecanm/SKILL.md)

## Search Benzinga for the latest coverage

1. Get an agent credential with a Prepaid credits balance. The storefront sells Benzinga on the Prepaid credits plan only, with no per-call price, so the balance comes before the search. [The buyer skill](https://agents.dappier.com/zcj/ucftdnuecanm/SKILL.md) covers registering, buying credit and paying for it.

2. Send the search with `most_recent` so the newest stories come first:

   ```bash
   curl -s -X POST "https://agents.dappier.com/zcj/ucftdnuecanm/zeroclick/v2/search?data_model_id=dm_01jmxn1a9tem8bq1nzbzjck8c4" \
     -H "Authorization: Bearer $ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"query": "AAPL", "search_algorithm": "most_recent", "similarity_top_k": 9}'
   ```

   Always set `search_algorithm` explicitly. That way the ranking is the one you chose.

3. Read the response. The body has this shape:

   ```json
   {
     "status": "<status>",
     "response": {
       "query": "AAPL",
       "message": "<message>",
       "results": [
         {
           "title": "<title>",
           "summary": "<summary>",
           "preview_content": "<preview>",
           "url": "<article url>",
           "source_url": "<tracking url>",
           "site": "<site>",
           "site_domain": "<domain>",
           "author": "<author>",
           "pubdate": "<publication date>",
           "pubdate_unix": 0,
           "score": 0.0,
           "image_url": "<image url>"
         }
       ]
     }
   }
   ```

   Use `pubdate` or `pubdate_unix` to sort or filter by recency. Link readers with `url`. `score` is the relevance score. You can append `&w=400&h=200` to `image_url` to get a resized image.

4. Check what the call drew. A 200 carries a `zc-usage` header reporting one `query`. It also carries a `zc-billing` header with `fundingSource`, `chargedUsd` and `remainingCreditUsd`, which is your balance after the call.

5. Fetch more results by sending the same request with `page` raised. Each request is another query at $0.02.

## Choose the ranking

| What you need | `search_algorithm` |
| --- | --- |
| The latest stories on a company or ticker, newest first | `most_recent` |
| The stories most relevant to the query or to a URL's content | `semantic` |
| Relevant stories, ordered newest first | `most_recent_semantic` |
| Stories on keywords trending in the past 24 hours | `trending` |

## Budget the queries

Every request is one query.

| Queries | Cost |
| --- | --- |
| 10 | $0.20 |
| 50 | $1 |
| 100 | $2 |

Unused credit stays on the balance for later calls.

## Boundaries

- One publisher per request. `data_model_id` takes one value, and this page covers only the Benzinga one.
- `query` takes one string, so ten tickers are ten requests.
- Benzinga calls need a Credits balance bought with an agent credential. The small anonymous credit, bought without registering, holds less than one Benzinga query costs and cannot be topped up.
- Access tokens last minutes. When one expires, exchange your stored assertion again, as [the identity reference](https://agents.dappier.com/zcj/ucftdnuecanm/auth.md) describes.

## Errors

| Response | Meaning | Action |
| --- | --- | --- |
| `401 bearer_required` | No agent credential on the call | Register at [auth.md](https://agents.dappier.com/zcj/ucftdnuecanm/auth.md), then retry with `Authorization: Bearer <token>` |
| `401 invalid_token` | The token expired or did not verify | Re-exchange your stored assertion for a fresh token |
| `403 plan_required` | The credential holds no plan covering Benzinga | Buy Prepaid credits from the `purchase.url` in the body, then retry |
| `usage_exhausted` | The credit balance is used up | Top up with `POST https://agents.dappier.com/zcj/ucftdnuecanm/extend` and `{"amountUsd": "..."}` |
| `400` | `data_model_id` is missing from the URL | Add `?data_model_id=dm_01jmxn1a9tem8bq1nzbzjck8c4` |
| `422` | `query` was empty, or the model id is malformed | Send a non-empty `query` and the exact id |

## Frequently asked questions

### Can I search Benzinga news by stock ticker?

Yes. `query` takes natural language, a keyword or a URL, so a ticker, a company name or a topic all work. Set `search_algorithm` to `most_recent` to get the newest coverage first.

### Do I need a Dappier API key?

No. Calls go through the storefront with the agent credential it issues, presented as `Authorization: Bearer <token>`. The storefront forwards each call to Dappier and bills it against your Prepaid credits balance.

### Why can't an anonymous receipt pay for a Benzinga query?

A receipt spends only its own small credit, which holds less than one Benzinga query costs, and a receipt cannot be topped up. A Benzinga query therefore needs a Credits balance bought with an agent credential.

### How much does Benzinga news search cost per query?

$0.02 per query, drawn from Prepaid credits. A Credits purchase is at least $0.01 on a wallet rail or $0.50 by card. Each call's `zc-billing` header reports what it drew and the balance left.

### How do I get only recent financial news?

Set `search_algorithm` to `most_recent`, then filter results on `pubdate_unix`. For stories tied to what is trending in the past 24 hours, use `trending`.

## Keep reading

- [Buyer skill](https://agents.dappier.com/zcj/ucftdnuecanm/SKILL.md): the full purchase flow
- [How to pay](https://agents.dappier.com/zcj/ucftdnuecanm/payment.md): Prepaid credits, rails and top-ups
- [Agent identity](https://agents.dappier.com/zcj/ucftdnuecanm/auth.md): registering and exchanging a credential
- [Error reference](https://agents.dappier.com/zcj/ucftdnuecanm/errors.md): every error code and the action to take
- [API reference](https://agents.dappier.com/zcj/ucftdnuecanm/openapi.json): the exact request and response schemas

---

Updated 2026-10-16. All Dappier guides: https://agents.dappier.com/guides.md. Storefront: https://agents.dappier.com/zcj/ucftdnuecanm/llms.txt.
