# Appfolio Rate Limits

> Handle AppFolio API rate limits with throttling and backoff. Trigger: "appfolio rate limit".

- Skill: `jeremylongshore/appfolio-rate-limits` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jeremylongshore/appfolio-rate-limits`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jeremylongshore/appfolio-rate-limits/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- License: MIT
- Author: jeremylongshore (https://skillmd.com/u/jeremylongshore)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/jeremylongshore/appfolio-rate-limits

---


# appfolio rate limits | sed 's/\b\(.\)/\u\1/g'

## Overview
AppFolio API enforces rate limits per partner. Implement throttling to stay within limits.

## Rate Limit Handler
```typescript
import Bottleneck from "bottleneck";

const limiter = new Bottleneck({
  maxConcurrent: 5,
  minTime: 200,  // 5 requests/second max
});

async function throttledRequest(client: any, path: string) {
  return limiter.schedule(() => client.http.get(path));
}

// 429 retry
async function withRetry(fn: () => Promise<any>, maxRetries = 3) {
  for (let i = 1; i <= maxRetries; i++) {
    try { return await fn(); }
    catch (err: any) {
      if (err.response?.status !== 429 || i === maxRetries) throw err;
      const delay = Math.min(1000 * Math.pow(2, i), 30000);
      await new Promise(r => setTimeout(r, delay));
    }
  }
}
```

## Resources

- [AppFolio Stack APIs](https://www.appfolio.com/stack/partners/api)
- [AppFolio Engineering Blog](https://engineering.appfolio.com)


