# Civitai Models Scraper (`maximedupre/civitai-models`) Actor

Get Civitai models by keyword, model ID, or link. Each model comes with its creator, stats, license terms, all versions, download links, file hashes, and preview images. Filter by model type, base model, creator, or tag.

- **URL**: https://apify.com/maximedupre/civitai-models.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** AI, Developer tools, For creators
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.35 / 1,000 models

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🎨 Get Civitai models with their files, stats, and license terms

This Actor is for AI artists, model collectors, researchers, and developers who track AI image models on [Civitai](https://civitai.com). It returns Civitai models with their creator, stats, license terms, every version, download links, file hashes, and preview images. You get the data in a clean dataset, so you do not have to open each model page and copy it by hand.

- Find the best Civitai models for a keyword, such as anime or realistic, ranked by downloads or likes.
- Track new LoRAs or checkpoints for a base model, such as SDXL 1.0, Pony, or Illustrious.
- Collect download links for Civitai models, with file sizes, formats, and SHA256 hashes.
- Check the license terms of models before you use them in commercial work.
- Follow a creator or a saved search over time and get only the models that are new since the last run.

#### 📦 What data you get for each model

For each model you get:

- Model ID, name, model type, tags, and the creator's description
- Creator username and avatar link
- Downloads, likes, dislikes, comments, and tips, as Civitai states them
- License terms: commercial use, derivatives, credit, and relicensing
- Every version, newest first, with its base model, publish date, and trigger words
- Files for each version, with download link, size, format, precision, safety scan results, and hashes
- Preview images for each version, with size and, when the uploader shares it, the prompt, negative prompt, sampler, steps, CFG scale, and seed
- Flags for mature (NSFW) content and real persons

#### 🚀 How to get Civitai models

1. Open the Actor and pick how to find models in **Find models by**: Search, Model IDs, or Model links.
2. For Search, add keywords, or leave them empty to browse the top models. Add filters and a sort order if you want.
3. Set **Max models** and click **Start**.
4. Download the dataset as JSON, CSV, Excel, or HTML, or read it through the Apify API.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `maxItems` | integer | The most models to get. Empty or `0` gets all models that match. The form fills in `20` for you, but there is no default limit. |
| `findBy` | string | How to find models: `search` (default), `modelIds`, or `modelUrls`. Only the fields for the chosen way are used. |
| `searchQueries` | array of strings | Search only. Keywords, one per line. Each keyword is a separate search. Empty browses the top models with the sort and filters. The form fills in `anime`. |
| `modelTypes` | array of strings | Search only. Get only these model types, such as `Checkpoint`, `LORA`, `TextualInversion`, `VAE`, or `Controlnet`. Empty gets all types. |
| `baseModels` | array of strings | Search only. Get only models for these base models, such as `SD 1.5`, `SDXL 1.0`, `Pony`, `Illustrious`, or `Flux.1 D`. Empty gets all. |
| `creators` | array of strings | Search only. Get only models by these Civitai usernames. With keywords too, each keyword is searched for each creator. |
| `tag` | string | Search only. Get only models with this Civitai tag, such as `character` or `style`. |
| `sort` | string | Search only. The result order: `Most Downloaded` (default), `Highest Rated`, `Most Liked`, `Most Discussed`, `Most Collected`, `Most Images`, or `Newest`. |
| `period` | string | Search only. The time period whose stats rank the models: `AllTime` (default), `Year`, `Month`, `Week`, or `Day`. |
| `includeMatureContent` | boolean | Search only. Also get models that Civitai marks as mature (NSFW). Default `false`. |
| `onlyNewModels` | boolean | Search only. Get only models that earlier runs of this same search did not find. Default `false`. |
| `modelIds` | array of strings | Model IDs only. Civitai model IDs, one per line, such as `4201`. |
| `modelUrls` | array of links | Model links only. Civitai model page links, such as `https://civitai.com/models/4201`. |

**Example input**

```json
{
  "maxItems": 20,
  "findBy": "search",
  "searchQueries": [
    "anime"
  ],
  "sort": "Most Downloaded",
  "period": "AllTime",
  "includeMatureContent": false,
  "onlyNewModels": false
}
```

#### 🧾 Output

**Output fields**

| Field | Type | What it does |
| --- | --- | --- |
| `modelId` | number | The Civitai ID of the model. |
| `name` | string | The model name. |
| `type` | string | The model type as Civitai states it, such as `Checkpoint`, `LORA`, or `TextualInversion`. |
| `tags` | array | The Civitai tags on the model. |
| `isMature` | boolean | `true` when Civitai flags the model as mature (NSFW). |
| `isRealPerson` | boolean or null | `true` when Civitai marks the model as showing a real person. |
| `description` | string or null | The creator's description, as HTML. |
| `searchQuery` | string or null | The keyword that found the model. Empty when you did not search by keyword. |
| `creator.username` | string | The creator's Civitai username. |
| `creator.avatarUrl` | string or null | Link to the creator's avatar image. |
| `stats.downloadCount` | number or null | How many times the model was downloaded. |
| `stats.thumbsUpCount` | number or null | How many likes the model has. |
| `stats.thumbsDownCount` | number or null | How many dislikes the model has. |
| `stats.commentCount` | number or null | How many comments the model has. |
| `stats.tippedAmountCount` | number or null | The amount of tips (Buzz) the model received. |
| `license.allowCommercialUse` | array | The kinds of commercial use allowed, such as `Image`, `RentCivit`, `Rent`, or `Sell`. Empty when none is allowed. |
| `license.allowDerivatives` | boolean or null | `true` when you may share models made from this model. |
| `license.allowNoCredit` | boolean or null | `true` when you may use the model without crediting the creator. |
| `license.allowDifferentLicense` | boolean or null | `true` when you may share models made from it under a different license. |
| `versions` | array | All versions, newest first. The first item is the latest version. |
| `versions[].versionId` | number | The Civitai ID of the version. |
| `versions[].name` | string | The version name. |
| `versions[].baseModel` | string or null | The base model, such as `SD 1.5`, `SDXL 1.0`, or `Flux.1 D`. |
| `versions[].publishedAt` | string or null | When the version was published, as an ISO 8601 date and time. |
| `versions[].trainedWords` | array | The trigger words for the version. |
| `versions[].stats.downloadCount` | number or null | How many times the version was downloaded. |
| `versions[].stats.thumbsUpCount` | number or null | How many likes the version has. |
| `versions[].files[].name` | string | The file name. |
| `versions[].files[].downloadUrl` | string | Link to download the file. |
| `versions[].files[].isPrimary` | boolean or null | `true` for the main file of the version. |
| `versions[].files[].type` | string or null | The kind of file, such as `Model`, `Pruned Model`, `VAE`, or `Training Data`. |
| `versions[].files[].sizeKb` | number or null | The file size in kilobytes. |
| `versions[].files[].format` | string or null | The file format, such as `SafeTensor` or `PickleTensor`. |
| `versions[].files[].precision` | string or null | The number precision, such as `fp16` or `fp32`. |
| `versions[].files[].pickleScanResult` | string or null | The pickle safety scan result, such as `Success` or `Danger`. |
| `versions[].files[].virusScanResult` | string or null | The virus scan result, such as `Success` or `Danger`. |
| `versions[].files[].scannedAt` | string or null | When Civitai scanned the file. |
| `versions[].files[].hashes` | object | File hashes by hash type, such as `SHA256`, `AutoV2`, or `BLAKE3`. |
| `versions[].images[].url` | string | Link to the preview image. |
| `versions[].images[].width` | number or null | The image width in pixels. |
| `versions[].images[].height` | number or null | The image height in pixels. |
| `versions[].images[].generationData` | object or null | The settings used to make the image, when the uploader shares them. |
| `versions[].images[].generationData.prompt` | string or null | The prompt. |
| `versions[].images[].generationData.negativePrompt` | string or null | The negative prompt. |
| `versions[].images[].generationData.sampler` | string or null | The sampler name. |
| `versions[].images[].generationData.steps` | number or null | The number of steps. |
| `versions[].images[].generationData.cfgScale` | number or null | The CFG scale. |
| `versions[].images[].generationData.seed` | number or null | The seed. |

**Example model**

```json
{
  "modelId": 24833,
  "name": "Minimalist Anime Style",
  "type": "LORA",
  "tags": [
    "anime",
    "minimalist",
    "artstyle",
    "style"
  ],
  "isMature": false,
  "description": "<p>Gives more detail when using negative weight. (Thanks for this information @superBlast)</p>",
  "searchQuery": "anime",
  "creator": {
    "username": "hortacreator",
    "avatarUrl": null
  },
  "stats": {
    "downloadCount": 27241,
    "thumbsUpCount": 4369,
    "commentCount": 8,
    "tippedAmountCount": 160,
    "thumbsDownCount": 2
  },
  "license": {
    "allowCommercialUse": [
      "Image",
      "RentCivit",
      "Rent"
    ],
    "allowDerivatives": true,
    "allowNoCredit": true,
    "allowDifferentLicense": true
  },
  "versions": [
    {
      "versionId": 29709,
      "name": "v1.0",
      "baseModel": "SD 1.5",
      "publishedAt": "2023-03-26T18:40:05.921Z",
      "trainedWords": [
        "anime minimalist"
      ],
      "stats": {
        "downloadCount": 27241,
        "thumbsUpCount": 4369
      },
      "files": [
        {
          "name": "anime_minimalist_v1-000020.safetensors",
          "downloadUrl": "https://civitai.com/api/download/models/29709",
          "isPrimary": true,
          "type": "Model",
          "sizeKb": 147571.849609375,
          "format": "SafeTensor",
          "precision": "fp16",
          "pickleScanResult": "Success",
          "virusScanResult": "Success",
          "scannedAt": "2023-03-26T18:45:39.163Z",
          "hashes": {
            "AutoV1": "CD6A7810",
            "AutoV2": "F16F6504EF",
            "SHA256": "F16F6504EF57EAC0D0ABE857D9A4665681E935438FE3315F6045337F4FCEFD71",
            "CRC32": "C677A2B7",
            "BLAKE3": "CE8DC1093EB15F703ADEDABF6CDFF680181BA1815065CE12665D4FC75286ED29",
            "AutoV3": "DF6E467C4E38",
            "SHA256_12": "F16F6504EF57"
          }
        }
      ],
      "images": [
        {
          "url": "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/3dc34bb7-c730-4f14-556d-b9dd36493400/original=true/336272.jpeg",
          "width": 768,
          "height": 768,
          "generationData": {
            "prompt": "<lora:anime_minimalist_v1-000020:0.9>, anime minimalist, 1girl, solo, blue hair, yellow background, hair ornament, curly hair, butterfly hair ornament",
            "negativePrompt": "(worst quality, low quality:1.4), (realistic, lip, nose, tooth, rouge, lipstick, eyeshadow:1.0), (abs, muscular, rib:1.0),",
            "sampler": "DPM++ 2M Karras",
            "steps": 20,
            "cfgScale": 7,
            "seed": 1267369318
          }
        },
        {
          "url": "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/cc16fa99-8afb-40ef-2a59-b37d75036600/original=true/336271.jpeg",
          "width": 768,
          "height": 1152,
          "generationData": {
            "prompt": "<lora:anime_minimalist_v1-000020:0.9>, anime minimalist, 1girl, solo, <lora:2bNierAutomataLora_v2b:0.5>, yorha no. 2 type b, black blindfold, black dress, black hairband, white hair,",
            "negativePrompt": "(worst quality, low quality:1.4), (realistic, lip, nose, tooth, rouge, lipstick, eyeshadow:1.0), (abs, muscular, rib:1.0),",
            "sampler": "DPM++ 2M Karras",
            "steps": 20,
            "cfgScale": 7,
            "seed": 2613523827
          }
        },
        {
          "url": "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/85f78fe2-403a-48ec-068e-c3cae0740000/original=true/336274.jpeg",
          "width": 512,
          "height": 768,
          "generationData": {
            "prompt": "<lora:anime_minimalist_v1-000020:0.8>, anime minimalist, 1girl, solo, blue shirt, long hair,",
            "negativePrompt": "(worst quality, low quality:1.4), (realistic, lip, nose, tooth, rouge, lipstick, eyeshadow:1.0), (abs, muscular, rib:1.0),",
            "sampler": "DPM++ 2M Karras",
            "steps": 20,
            "cfgScale": 7,
            "seed": 2470820666
          }
        },
        {
          "url": "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/ef69ed48-237e-46c2-a404-89011420f500/original=true/336273.jpeg",
          "width": 1152,
          "height": 768,
          "generationData": {
            "prompt": "<lora:anime_minimalist_v1-000020:0.9>, anime minimalist, 1girl, solo, <lora:chtholly_nota_seniorious_v1.1-000020:0.4>, chtholly nota seniorious,",
            "negativePrompt": "(worst quality, low quality:1.4), (realistic, lip, nose, tooth, rouge, lipstick, eyeshadow:1.0), (abs, muscular, rib:1.0),",
            "sampler": "DPM++ 2M Karras",
            "steps": 20,
            "cfgScale": 7,
            "seed": 2034689313
          }
        }
      ]
    }
  ],
  "isRealPerson": false
}
```

#### 💳 Pricing

You pay for each model saved to your dataset, at $0.35 per 1,000 models. Each model is saved and charged once per run, even when several keywords find it. You are not charged for model IDs or links that Civitai cannot find, for searches with no matches, or for models that **Only new models** skips. Apify platform usage is billed as usual.

#### 🔌 Integrations

You can connect this Actor to Make, Zapier, Google Sheets, Slack, webhooks, and other tools through Apify integrations. You can also run it and read the dataset with the Apify API. This video shows how integrations work:

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I get Civitai deleted models?

No. The Actor reads models that Civitai still shows. When a model ID or link points to a deleted model, Civitai returns no model, so the Actor logs a warning, moves on, and does not charge you for it.

##### How does Only new models work?

The Actor remembers which models each search found in earlier runs. A search is the same when the keyword, creator, filters, sort, period, and mature setting are the same. With **Only new models** on, it returns only models that this search has not found before.

##### Do the filters work with Model IDs or Model links?

No. Model types, base models, creators, tag, sort, period, mature content, and **Only new models** apply only to Search. Model IDs and Model links get the exact models you list.

##### What happens if I add keywords and creators together?

Each keyword is searched for each creator. A model found by more than one search is saved only once.

##### Can I download the model files?

Yes. Each file has a `downloadUrl` that you can open to download the file. The Actor gives you the links, file sizes, and hashes. It does not save the model files itself.

##### How do I use Civitai models locally?

Download the file from `downloadUrl`, then check `baseModel` to see which base model it works with and `trainedWords` for the trigger words. Put the file in the model folder of your local image tool, such as a checkpoint or LoRA folder.

##### How do I find the best Civitai models?

Leave **Keywords** empty, pick a model type or base model, and sort by `Most Downloaded`, `Highest Rated`, or `Most Liked`. Use **Time period** to rank by stats from the last day, week, month, or year.

##### Does it get mature (NSFW) models?

Only when you turn on **Include mature (NSFW) models**. It is off by default. Each model has an `isMature` flag either way.

### 📝 Changelog

**v0.0** (30-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~civitai-models/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Civitai Models Scraper](https://apify.com/parseforge/civitai-models-scraper): export Civitai models in bulk for model research and datasets.
- [Civitai Scraper - AI Model Catalog, LORAs, Checkpoints & Stats](https://apify.com/jungle_synthesizer/civitai-models-scraper): build a catalog of Civitai LoRAs and checkpoints with stats.
- [Civitai Scraper - AI Models, LoRAs, Images & Creator Leads](https://apify.com/scrapesage/civitai-scraper): get Civitai images and creator details along with models.
- [Civitai Model Scraper — AI Image Model Intelligence](https://apify.com/straightforward_hydra/civitai-model-scraper): get the latest version and download link of Civitai models.
- [Civitai Trend Tracker — Trending Models, LoRAs & Prompts](https://apify.com/dsh-org/ai-art-prompt-model-trend-tracker): follow trending Civitai models, LoRAs, and prompts.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `maxItems` (type: `integer`):

The most models to get. Leave it empty or set 0 to get all models that match.

## `findBy` (type: `string`):

Search: find models by keyword, or browse the top models when you give no keyword. Model IDs and Model links: get the exact models you list.

## `searchQueries` (type: `array`):

Words to search for, one per line. Each keyword is a separate search. Leave it empty to browse the top models with the sort and filters below.

## `modelTypes` (type: `array`):

Get only these model types. Leave it empty to get all types. You can also type a type name that Civitai uses.

## `baseModels` (type: `array`):

Get only models made for these base models. Leave it empty to get all. You can also type any base model name exactly as Civitai shows it.

## `creators` (type: `array`):

Get only models made by these Civitai creators. Enter usernames, one per line.

## `tag` (type: `string`):

Get only models with this Civitai tag, such as character or style.

## `sort` (type: `string`):

The order Civitai uses for the results.

## `period` (type: `string`):

The time period whose stats rank the models.

## `includeMatureContent` (type: `boolean`):

Also get models that Civitai marks as mature.

## `onlyNewModels` (type: `boolean`):

Get only models that earlier runs of this same search did not find. Use it to follow a saved search over time.

## `modelIds` (type: `array`):

Civitai model IDs, one per line. The ID is the number in a model link, such as 4201 in https://civitai.com/models/4201.

## `modelUrls` (type: `array`):

Full Civitai model page links, such as https://civitai.com/models/4201.

## Actor input object example

```json
{
  "maxItems": 20,
  "findBy": "search",
  "searchQueries": [
    "anime"
  ],
  "sort": "Most Downloaded",
  "period": "AllTime",
  "includeMatureContent": false,
  "onlyNewModels": false
}
```

# Actor output Schema

## `models` (type: `string`):

The Civitai models found in this run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 20,
    "searchQueries": [
        "anime"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/civitai-models").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 20,
    "searchQueries": ["anime"],
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/civitai-models").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 20,
  "searchQueries": [
    "anime"
  ]
}' |
apify call maximedupre/civitai-models --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/civitai-models"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/crrgdjP4A3uWc0OVy/builds/kl828e1GCGAhDxU73/openapi.json
