# Quora Topics API (quora.topics)

- Canonical page: https://everyinfra.com/en/quora-api/topics
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "quora", "action": "topics", "params": {...}}
- Price: $0.001389 per call ($1.39 per 1,000 requests); failed calls and empty results are not charged
- Returns: list, default 20, max 200 per call
- Mode: sync; add "mode": "async" for slow tasks

Quora Topics looks up Quora topic pages that match a `keyword`, such as programming, and returns rows with a record `type`, a title or name, a link, the topic ID in `topic_id` and, where Quora shows it, a follower count. It answers where discussion of a subject is organized on Quora: content marketers and SEO teams use it to choose topics to follow and answer in, and community researchers use it to map the subject areas around a theme.

`keyword` is a subject term that discovers topic pages; it is not a lookup of one question by its exact title or URL. `date_range` sets the freshness window of the search, from the past hour to the past year, or no limit at all. A null `follower_count` means the number was not disclosed, not that nobody follows the topic. Questions and answers on a subject come from the Quora Questions and Quora Answers capabilities.

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=quora&action=topics

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| keyword | not declared | yes | not declared | Specifies search keywords across Quora search actions including questions, answers, posts, profiles, and topics. It performs keyword search across those entity types and does not fetch single objects by direct URL. |
| date_range | enum: all_time_broadest_discovery / past_day_last_24_hours / past_hour_very_recent_results / past_month_last_30_days / past_week_last_7_days / past_year_last_12_months | no | not declared | Filters results by publishing window across Quora actions. Supported values are all_time_broadest_discovery, past_hour_very_recent_results, past_day_last_24_hours, past_week_last_7_days, past_month_last_30_days, and past_year_last_12_months. Setting this parameter overrides any legacy time_filter values. |
| limit | integer (1–200) | no | 20 | The most rows to return in this call, an integer from 1 to 200. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| type | Record type; values depend on the capability (for example video / image / text). |
| url | Link to the record on the platform. |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |
| title | Title. null when the platform has no titles (for example text-only posts). |
| posted_at | Publish time in ISO 8601, UTC (for example 2026-08-07T12:34:56+00:00). Non-standard strings from the platform are passed through as is, so parse defensively. null means the platform does not disclose it. |
| answer_count | platform-native meaning |
| comment_count | Comments. null means not disclosed, not 0. |
| follower_count | Followers. null means not disclosed, not 0. |
| is_locked | platform-native meaning |
| is_sensitive | platform-native meaning |
| text | Body text with HTML removed, returned in full and never cut short (on a few platforms the list results themselves carry only an excerpt; the platform's field notes say so). |
| author_name | Author's display name. |
| author_url | Link to the author's profile on the platform. |
| author_credential | platform-native meaning |
| upvote_count | platform-native meaning |
| share_count | Shares. null means not disclosed, not 0. |
| view_count | Views or plays. null means not disclosed, not 0. |
| question_id | platform-native meaning |
| question_url | platform-native meaning |
| space_name | platform-native meaning |
| name | Name of the object itself, for account, product and business capabilities. |
| user_id | User's unique ID on the platform. |
| credential | platform-native meaning |
| avatar_url | Avatar image link. Some platforms return sized CDN links that can expire. |
| topic_id | platform-native meaning |
| photo_url | platform-native meaning |

## Example

```bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "quora",
  "action": "topics",
  "params": {
    "keyword": "programming"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "quora",
        "action": "topics",
        "params": {
            "keyword": "programming",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-09-26T08:56:04Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2 of 20. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "quora",
  "action": "topics",
  "results": [
    {
      "type": "topic",
      "url": "https://www.quora.com/topic/Computer-Programming",
      "platform": "quora",
      "name": "Computer Programming",
      "topic_id": 788,
      "follower_count": 5588652,
      "photo_url": "https://qph.cf2.quoracdn.net/main-thumb-t-785-100-SPdel3dlJbwe69kzHRdC9zraBLeasYX0.jpeg"
    },
    {
      "type": "topic",
      "url": "https://www.quora.com/topic/Computer-Programmers",
      "platform": "quora",
      "name": "Computer Programmers",
      "topic_id": 8333,
      "follower_count": 895391,
      "photo_url": "https://qph.cf2.quoracdn.net/main-thumb-t-8333-100-LFuCOf9qFPgeqiYDDa8NErkhJzKhe2ZG.jpeg"
    }
  ],
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### What should I pass as `keyword`?

A subject term, such as programming or a product category. Quora Topics uses it to discover matching topic pages; it does not fetch a single question from its title or URL. When you want the questions or answers that mention a term, search with the Quora Questions or Quora Answers capability, which take the same kind of `keyword`.

### What do the `date_range` values mean?

They set the freshness window for Quora Topics: `past_hour_very_recent_results` covers the last hour, `past_day_last_24_hours` the last day, `past_week_last_7_days` the last week, `past_month_last_30_days` the last month and `past_year_last_12_months` the last year. `all_time_broadest_discovery` applies no time limit and gives the broadest discovery.

### Does a null `follower_count` mean a topic has no followers?

No. Null means Quora did not disclose the count, which is not the same as zero. When you rank topics by audience, set null rows aside instead of sorting them to the bottom, and open the row's `url` if you need to check a particular topic page yourself.

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=quora
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
