> ## Documentation Index
> Fetch the complete documentation index at: https://api-tools.memories.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Import from Hashtag — Private

> Discover and ingest recent posts tagged with one or more hashtags into your Private Video Library.

<Info>
  **Product**: Visual Search
  **Use case**: Upload videos and images, auto-index them, then search by natural language, image, or transcript phrase
  **Host**: `https://api.memories.ai/serve/api/v1`
  **Auth**: `Authorization: sk-mavi-...` (no `Bearer` prefix)
</Info>

Discover and import recent posts tagged with one or more hashtags into your **Private Video Library**. Currently supported on **TikTok** (YouTube, Instagram, and others coming soon).

Related: [Import from Hashtag — Public](/visual-search/upload-from-hashtag-public) · [Import from Post URLs](/visual-search/upload-from-post-urls) · [Import from Creator Profile](/visual-search/upload-from-creator-profile).

Provide hashtag terms as plain strings **without the `#` prefix**.

## Prerequisites

* You have [created a memories.ai API key](/visual-search/create-your-key).

## Request Example

```python theme={null}
import requests

headers = {"Authorization": "sk-mavi-..."}
payload = {
    "hash_tags": ["LVMH", "Dior"],
    "folder_id": 671631448308117504,
    "scraper_cnt": 5,
    "callback": "https://your.app/callback"
}
response = requests.post(
    "https://api.memories.ai/serve/api/v1/scraper_tag",
    json=payload,
    headers=headers
)
print(response.json())
```

## Parameters

<ParamField body="hash_tags" type="array" required>
  List of hashtag terms to crawl. Plain strings without the `#` prefix (e.g. `["LVMH", "Dior"]`).
</ParamField>

<ParamField body="scraper_cnt" type="integer">
  Number of most recent posts to ingest per hashtag.
</ParamField>

<ParamField body="folder_id" type="integer">
  Optional. Target folder for the uploaded video(s). Omit (or pass `-1`) to store in your account's **Default folder** (created automatically on first use). Pass a folder id from [List Folders](/visual-search/list-folders) or [Create Folder](/visual-search/create-folder) to store in that folder — it must belong to your account, otherwise the request is rejected.
</ParamField>

<ParamField body="callback" type="string">
  URL to receive POST notifications on task and per-video indexing progress. The server also accepts the alias `callback_url`.
</ParamField>

## Response Example

```json theme={null}
{
    "code": "0000",
    "msg": "success",
    "data": {
        "taskId": "31b0fccb-d6f9-4135-922d-1e8828499812"
    },
    "success": true,
    "failed": false
}
```

## Response Fields

<ResponseField name="code" type="string">Business status code. `0000` indicates success.</ResponseField>
<ResponseField name="msg" type="string">Human-readable status message.</ResponseField>
<ResponseField name="data.taskId" type="string">Unique identifier for the import task. Use with [Get Task Status](/visual-search/get-task-status).</ResponseField>

## Notes & Limits

* **Platform support**: TikTok only at this time.
* **Rate limiting**: See [Rate limits](/visual-search/rate-limits).
* **Billing**: Each request deducts credits per ingested post.


## OpenAPI

````yaml POST /serve/api/v1/scraper_tag
openapi: 3.1.0
info:
  title: Memories Platform API (Docs Mapping)
  version: v1
  description: OpenAPI mapping used by Mintlify Try it for the platform docs.
servers:
  - url: https://api.memories.ai
security:
  - ApiKeyAuth: []
paths:
  /serve/api/v1/scraper_tag:
    post:
      summary: Upload Video from Hashtag
      operationId: upload_video_from_hashtag
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadVideoFromHashtagRequest'
      responses:
        '200':
          $ref: '#/components/responses/SuccessJson'
components:
  schemas:
    UploadVideoFromHashtagRequest:
      type: object
      properties:
        hash_tags:
          type: array
          items:
            type: string
          example:
            - LVMH
        scraper_cnt:
          type: integer
          default: 2
        callback:
          type: string
          format: uri
          example: https://your.app/callback
        folder_id:
          type: integer
          description: >-
            Optional target folder for the upload. Omit or pass -1 for the
            account's Default folder (auto-created on first use). A positive id
            must belong to your account.
          example: 671631448308117500
      required:
        - hash_tags
    GenericJsonResponse:
      type: object
      properties:
        code:
          type:
            - string
            - integer
          example: '0000'
        msg:
          type: string
          example: success
        data:
          oneOf:
            - type: object
              additionalProperties: true
            - type: array
              items:
                type: object
                additionalProperties: true
            - type: string
            - type: 'null'
        success:
          type: boolean
          example: true
        failed:
          type: boolean
          example: false
      additionalProperties: true
  responses:
    SuccessJson:
      description: Successful response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericJsonResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization

````