# Flower Shop Market Analyzer (`vb117/flower-shop-market-analyzer`) Actor

- **URL**: https://securitybyobscurity.apify.com/vb117/flower-shop-market-analyzer.md
- **Developed by:** [V B](https://securitybyobscurity.apify.com/vb117) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**Flower Shop Market Analyzer** is an AI agent that researches the flower shop and florist market in any city and writes a market analysis report. Give it a **city** (e.g. "Prague, Czech Republic") and it searches [Google Maps](https://apify.com/compass/crawler-google-places) for local flower shops, computes real market statistics (shop count, average rating, total reviews, top-rated shop), and asks an LLM to turn that data into a readable report with concrete opportunities for a new or existing flower business. Run it on-demand via the Apify Console or API, schedule it to re-check a city monthly, or plug it into an integration (Zapier, Make, Google Sheets) to keep local-market research fully automated.

### Why use Flower Shop Market Analyzer?

- **Market research without manual digging** - instead of scrolling through Google Maps and tallying ratings by hand, get a written summary and the underlying numbers in one run.
- **Business planning** - aspiring florists and franchise scouts can quickly gauge how saturated or under-served a city's flower shop market is before committing to a location.
- **Content and lead generation** - agencies and consultants can generate city-by-city market snapshots for clients, blog posts, or pitch decks.
- **Repeatable and automatable** - run it across a list of cities via the Apify API, schedule recurring runs, and pipe the output straight into your CRM or spreadsheet.

### How to use Flower Shop Market Analyzer

1. Open the Actor's **Input** tab.
2. Enter the **City / location** you want analyzed, e.g. "Austin, Texas".
3. Optionally set **Max flower shops to analyze** and pick an **LLM model**.
4. Optionally fill in the **author fields** (webpage URL, resume/bio text, avatar picture URL) if you want the generated report to include a byline - handy when republishing the report under your own name.
5. Click **Start** and wait for the run to finish. Under the hood, the agent calls the [Google Maps Scraper](https://apify.com/compass/crawler-google-places) to fetch real flower shop listings for the city, then an LLM analyzes the results.
6. Open the **Output** tab to read the report, or grab it as a Markdown file from the key-value store.

### Input

The Actor accepts a JSON input with the following main fields (see the **Input** tab for the full form):

- `locationQuery` (required) - the city (optionally with country) to analyze, e.g. `"Prague, Czech Republic"`.
- `maxShopsToAnalyze` - how many flower shops to pull from Google Maps for the city (default 20).
- `modelName` (required) - which LLM (routed through the Apify OpenRouter proxy) writes the analysis.
- `webpageUrl`, `authorResumeText`, `authorAvatarUrl` - optional author profile fields rendered as a byline at the end of the report.
- `debug` - enables verbose logging.

```json
{
    "locationQuery": "Prague, Czech Republic",
    "maxShopsToAnalyze": 20,
    "modelName": "deepseek/deepseek-v4-flash"
}
```

### Output

Each run pushes a single item to the dataset with the full report and the structured data behind it. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The report is also saved as `REPORT.md` in the run's key-value store for easy reading or sharing.

```json
{
    "locationQuery": "Prague, Czech Republic",
    "report": "# Flower Shop Market Analysis: Prague, Czech Republic\n\n...",
    "structuredResponse": {
        "shopCount": 20,
        "averageRating": 4.4,
        "totalReviews": 3821,
        "topShops": [
            { "name": "Kvetinarstvi U Radnice", "rating": 4.8, "reviewsCount": 210, "website": "https://..." }
        ],
        "marketSummary": "Prague's flower shop market is dense in the historic center...",
        "opportunities": ["Same-day delivery is underserved outside the city center", "..."]
    },
    "author": {
        "webpageUrl": null,
        "resumeText": null,
        "avatarUrl": null
    }
}
```

#### Data table

| Field | Description |
| --- | --- |
| `locationQuery` | The city that was analyzed |
| `structuredResponse.shopCount` | Number of flower shops found on Google Maps |
| `structuredResponse.averageRating` | Average Google rating across shops with a rating |
| `structuredResponse.totalReviews` | Total number of Google reviews across all shops |
| `structuredResponse.topShops` | Name, address, rating, reviews, and website for standout shops |
| `structuredResponse.marketSummary` | Narrative overview of the local market |
| `structuredResponse.opportunities` | LLM-identified gaps or opportunities in the city's market |

### How much does it cost to run Flower Shop Market Analyzer?

This Actor uses [Pay Per Event](https://docs.apify.com/platform/actors/publishing/monetize#pay-per-event-pricing-model) pricing: a flat fee when the run starts and a flat fee when the analysis completes (see the **Pricing** tab for current amounts). On top of that, the Actor calls the Google Maps Scraper Actor and an LLM through the Apify OpenRouter proxy, both billed per their own usage-based pricing to your Apify account - a typical run analyzing 20 shops in one city costs a small fraction of a dollar. Apify's free tier includes monthly platform credits, so you can try it at no cost before committing to a paid plan.

### Tips and advanced options

- Lower **Max flower shops to analyze** for a faster, cheaper run when you only need a quick pulse on a market.
- Use a more capable `modelName` for cities with many shops or when you need a more nuanced write-up; use a lighter model for quick, cheap checks.
- Combine with the Apify [scheduler](https://docs.apify.com/platform/schedules) to re-run this Actor monthly and track how a city's flower shop market evolves over time.

### FAQ, disclaimers, and support

This Actor only reads publicly available Google Maps listing data through the Google Maps Scraper Actor; it does not scrape private or personal data beyond what's already public on a business listing. Ratings, review counts, and market commentary are a snapshot at run time and may shift as new reviews come in. The generated analysis is written by an LLM and should be treated as a research aid, not financial or legal advice - always verify important figures before acting on them.

Found a bug or have a feature request? Open an issue in the Actor's **Issues** tab. Need a tailored version of this Actor (different city sources, extra data fields, custom report formats)? Reach out through the Issues tab or the developer's Apify profile for custom development.

# Actor input Schema

## `locationQuery` (type: `string`):

City (optionally with country) to analyze the flower shop market in, e.g. "Prague, Czech Republic".

## `locationImageUrl` (type: `string`):

URL of a picture representing the searched city/location, shown at the top of the report.

## `maxShopsToAnalyze` (type: `integer`):

Maximum number of flower shops/florists to pull from Google Maps for this city.

## `modelName` (type: `string`):

Model ID routed through the Apify OpenRouter proxy (https://apify.com/apify/openrouter). Tokens are charged automatically to your Apify account, so no provider API key is needed.

## `webpageUrl` (type: `string`):

Optional link to the report author's personal website or portfolio. Shown in the report's byline.

## `authorResumeText` (type: `string`):

Optional short bio describing the report author. Shown in the report's byline.

## `authorAvatarUrl` (type: `string`):

Optional URL to the author's avatar image. Shown in the report's byline.

## `debug` (type: `boolean`):

If enabled, the Actor will run in debug mode and produce more output.

## Actor input object example

```json
{
  "locationQuery": "Prague, Czech Republic",
  "locationImageUrl": "https://placehold.co/1200x400?text=Flower+Shop+Market",
  "maxShopsToAnalyze": 20,
  "modelName": "deepseek/deepseek-v4-flash",
  "debug": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# 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 = {
    "locationQuery": "Prague, Czech Republic",
    "modelName": "deepseek/deepseek-v4-flash"
};

// Run the Actor and wait for it to finish
const run = await client.actor("vb117/flower-shop-market-analyzer").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 = {
    "locationQuery": "Prague, Czech Republic",
    "modelName": "deepseek/deepseek-v4-flash",
}

# Run the Actor and wait for it to finish
run = client.actor("vb117/flower-shop-market-analyzer").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 '{
  "locationQuery": "Prague, Czech Republic",
  "modelName": "deepseek/deepseek-v4-flash"
}' |
apify call vb117/flower-shop-market-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vb117/flower-shop-market-analyzer"
        }
    }
}
```

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-securitybyobscurity.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api-securitybyobscurity.apify.com/v2/actors/9mArNEf18snenyhzG/builds/giPoyebTAjrByP9cp/openapi.json
