Strapi Programmatic Pages Generator
Pricing
Pay per usage
Strapi Programmatic Pages Generator
Automate bulk programmatic page creation in Strapi CMS using JSON definitions stored in Apify Key-Value Store. Configure your Strapi credentials, point to your Key-Value Store, and let the Actor handle the rest.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Aleš Wilk
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 months ago
Last modified
Categories
Share
This Strapi Programmatic Pages Generator Apify Actor enables bulk programmatic creation of pages in Strapi CMS from JSON files. Simply upload your JSON page definitions to an Apify Key-Value Store, provide the store ID, and the Actor will automatically process all files and create the corresponding pages via the Strapi API. It's ideal for migrating content, automating page creation workflows, or programmatically managing large numbers of CMS pages.
How to run the Actor
- Prepare your JSON files - Create JSON files containing your page data (see format below)
- Upload files to a Key-Value Store - Upload all JSON files to an Apify Key-Value Store
- Configure the Actor input - Provide your Strapi credentials and the Key-Value Store ID
- Run the Actor - The Actor will process all files and create pages in Strapi
How to upload JSON files
- Go to Apify Console → Storage → Key-Value Stores
- Click Create new to create a new store (or use an existing one)
- Once inside the store, upload all your JSON files
- Copy the Store ID from the URL or the store details panel (e.g.,
orp55arA55Iqh3552)
Input configuration
| Field | Required | Description |
|---|---|---|
strapiBaseUrl | Yes | Your Strapi instance URL (e.g., https://cms.example.com) |
strapiApiToken | Yes | Bearer token for Strapi API authentication |
keyValueStoreId | No | ID of the Key-Value Store containing your JSON files. When provided, ALL files in the store are processed automatically |
apiEndpoint | No | API endpoint path (default: /api/custom-pages) |
jsonFileKeys | No | Optional filter - specify which keys to process. Leave empty to process all files |
statusQueryParam | No | Status parameter for the API request (default: draft) |
wrapInDataObject | No | Wrap payload in { data: ... } object (default: false) |
continueOnError | No | Continue processing if a file fails (default: true) |
requestDelayMs | No | Delay between API requests in ms (default: 100) |
Example input
{"apiEndpoint": "/api/custom-pages","continueOnError": true,"keyValueStoreId": "orp55arA55Iqh3552","statusQueryParam": "draft","strapiApiToken": "ENCRYPTED_VALUE","strapiBaseUrl": "https://strapi.domain.com","wrapInDataObject": false}
Input JSON file format
Each JSON file should contain the page data structure expected by your Strapi custom-pages endpoint. Below is an example of a typical page structure:
{"data": {"path": "/api/product-catalog-demo","experimentPage": null,"seo": {"description": "Explore our Product Catalog API for accessing comprehensive product information including pricing, availability, specifications, and inventory data.","title": "Product Catalog API","noIndexPage": null,"ogImage": null},"heroSection": {"title": "Product Catalog API","description": "Access real-time product data from major e-commerce platforms. Our API provides detailed information on pricing, stock levels, product specifications, customer reviews, and more.","enhancedTitleSubstring": null,"layout": "horizontal","primaryAction": {"href": "https://example.com/try-api","text": "Try Product API","isExternal": false,"asButton": true,"opensIntercom": null,"modalParam": null,"buttonType": "primary","nofollow": false,"isTracked": null},"secondaryAction": null,"images": {"lightImage": 2048,"darkImage": null},"backButton": null,"video": null,"promotion": null},"sections": [{"__component": "section.bullet-list-section","meta": null,"content": [{"text": "Product API in Python","href": "https://example.com/docs/python","isTracked": null,"opensIntercom": null,"modalParam": null},{"text": "Product API in JavaScript","href": "https://example.com/docs/javascript","isTracked": null,"opensIntercom": null,"modalParam": null},{"text": "Product API Reference","href": "https://example.com/docs/reference","isTracked": null,"opensIntercom": null,"modalParam": null}]},{"__component": "section.features-section","meta": null,"content": {"title": "Key Features","description": null,"eyebrow": null,"layout": "VERTICAL","features": [{"title": "Real-time Data","description": "Get up-to-date product information with automatic synchronization from source platforms every hour.","icon": 3001},{"title": "Comprehensive Coverage","description": "Access data from thousands of online stores and marketplaces with a single unified API.","icon": 3002},{"title": "Flexible Filtering","description": "Filter products by category, price range, availability, brand, and dozens of other attributes.","icon": 3003},{"title": "Multiple Export Formats","description": "Export your data in JSON, CSV, Excel, XML, or integrate directly via webhooks and streaming.","icon": 3004},{"title": "Scalable Infrastructure","description": "Handle millions of requests per day with our enterprise-grade infrastructure and 99.9% uptime SLA.","icon": 3005},{"title": "Developer Friendly","description": "Comprehensive documentation, SDKs for major languages, and responsive technical support.","icon": 3006}]}}]}}
Output
The Actor outputs a summary of the processing results:
{"summary": {"total": 5,"success": 4,"failed": 1},"results": [{"success": true,"index": 0,"source": "kv-store:homepage.json","response": { ... }}]}
Alternative input methods
Besides Key-Value Store, you can also provide JSON data via:
- Direct JSON input (
jsonData) - Paste JSON objects directly in the input - URLs (
jsonUrls) - Provide URLs to JSON files hosted online - Dataset (
datasetId) - Reference an Apify Dataset containing page data


